প্রক্রিয়া নাম সহ নেটস্ট্যাট?


46

ব্যবহার করে netstat -a -o -n আমি পোর্ট এবং পিআইডি তালিকা পেতে পারি

তারপরে আমাকে টাস্ক ম্যানেজারের কাছে গিয়ে পিআইডি যুক্ত করতে হবে এবং দেখুন এটি কে। (বেশ হতাশার)

এখানে চিত্র বর্ণনা লিখুন

যদি একটি সিএমডি কমান্ড যা এটি সব আছে আমি আশ্চর্য ছিল (ব্যবহারের find, for, powershell)

যাতে আমি প্রক্রিয়াটির নাম পেতে পারি


netstat -b অ্যাডমিন হিসাবে, যেমন নেটস্যাট -abon। এবং
এক্সির

উত্তর:


56

সমাধান

-bপ্যারামিটারটি ব্যবহার করুন :

  -b            Displays the executable involved in creating each connection or
                listening port. In some cases well-known executables host
                multiple independent components, and in these cases the
                sequence of components involved in creating the connection
                or listening port is displayed. In this case the executable
                name is in [] at the bottom, on top is the component it called,
                and so forth until TCP/IP was reached. Note that this option
                can be time-consuming and will fail unless you have sufficient
                permissions.

উল্লেখ্যnetstat -b একটি উন্নত আদেশ সত্বর থেকে চালানো যদি না কমান্ড ব্যর্থ হবে।

কার্যসংক্রান্ত

প্রক্রিয়া তালিকা ফিল্টার করুন এবং আপনার আগ্রহী পিআইডি সন্ধান করুন:

tasklist | findstr /c:"PID"  


বিকল্প সমাধান

Tcpvcon.exeপরিবর্তে আপনি ব্যবহার করতে পারেন । কোনও প্রশাসকের অধিকারের প্রয়োজন নেই।

Tcpvcon ব্যবহার অন্তর্নির্মিত উইন্ডোজ netstatইউটিলিটির অনুরূপ ।

Usage: tcpvcon [-a] [-c] [-n] [process name or PID]

 -a Show all endpoints (default is to show established TCP connections).
 -c Print output as CSV.
 -n Don't resolve addresses.

1
তুমি সেই লোক.
রই নমির

ভাল উত্তর, শুধু মন্তব্য করছি যে আমি মনে করি এটি মজার / এমএস / কীভাবে? ডকুমেন্টেশন এমনকি "এই বিকল্প সময়সাপেক্ষ হতে পারে" বলে! এবং এটি উইন্ডোজগুলির নির্বুদ্ধিতা যে এটি সময় সাপেক্ষে। লিনাক্সের নেটস্পট তার এক্সিকিউটেবল নামটি দ্রুত দেখায়। এবং এছাড়াও লিনাক্সের এক্সিকিউটেবল নাম প্রদর্শনের জন্য মূল / অ্যাডমিন সুবিধার প্রয়োজন হয় না
বার্লপ

8

আমি মনে করি আপনি সিসইন্টার্নালস থেকে টিসিপিভিউ খুঁজছেন ।


আমি অবাক হয়েছি যদি এমন কোনও সিএমডি কমান্ড থাকে যা এটি সবই করে
রই নমির

চালিয়ে যান - টিসিপিভিউয়ের একটি কমান্ড-লাইন উপাদান রয়েছে ..
লেপটোনেটর

ওহ ঠিক আছে. ভেবেছিল কেউ ইতিমধ্যে এটি ব্যবহার করে খুঁজে
পেয়েছে

এটি করা খুব কঠিন হওয়া উচিত নয় .. আমি বাজি ধরব রব্বেন্ডারউইড ডট কম এর কিছু আছে। টিসিপিভিউ পৃষ্ঠা অনুসারে - "টিসিপিভিউ ডাউনলোডে একই কার্যকারিতা সহ একটি কমান্ড-লাইন সংস্করণ Tcpvcon অন্তর্ভুক্ত রয়েছে।"
লেপটোটার

খুব ভাল সরঞ্জাম স্যুট .. যদি এটি এমএসএস এবং সিস না হয় আমি একটি নিক্স বাক্স ব্যবহার করব। :)
এডি বি

2

প্রক্রিয়াটির নাম দেখানোর জন্য উইন্ডোগুলি আউটপুট পার্সিংয়ের জন্য পিডে ফিল্টার দিয়ে ব্যবহার FORকরার জন্য এখানে উদাহরণ রয়েছে । netstatDO tasklist/fi

শেষ tasklistসন্ধানটি শিরোনামগুলি সরিয়ে ফেলা হয় ।

FOR /F "usebackq tokens=5 delims= " %i IN (`netstat -ano ^|find "443"`) DO @tasklist /fi "pid eq %i" | find "%i"

রেকর্ড আউটপুট যেমন মুদ্রণ

tomcat8.exe.x64               4240 Services                   0    931,864 K

netstatটোকেন যুক্ত করে অতিরিক্ত ক্ষেত্রগুলি যোগ করা যেতে পারে।


এই সমাধানটির উত্সগুলি সহ: ১. findবন্দরগুলি ফিল্টার করার জন্য ব্যবহার করা (বিপরীতে, যদিও netstat -bপ্রক্রিয়াটির নাম সরাসরি সরবরাহ করতে পারে, তবে নিজে থেকে অনুসন্ধানে আউটপুটটি প্রবেশ করা বেদনাদায়ক এবং ত্রুটি-প্রবণতা); ২. শুধুমাত্র উইন্ডোজ নেটিভ কমান্ড ব্যবহার করা, এটি আরও নমনীয় এবং স্বতন্ত্র।
ইংগিউ আপনি

1
সম্ভাব্য উন্নতি: 1. আরও ভাল অনুসন্ধানের জন্য রেগেক্স ব্যবহার করার পরিবর্তে বিকল্পের findstrসাথে ব্যবহার করা; 2. কেবল স্থানীয় পোর্টটি ফিল্টার করার জন্য প্যাটার্ন হিসাবে ব্যবহার করতে । পুরো কমান্ডটি হতে পারে/Rfind:443 *[[0-9]"FOR /F "usebackq tokens=5 delims= " %i IN (`netstat -ano ^|findstr /R /C:":443 *[[0-9]"`) DO @tasklist /fi "pid eq %i" | findstr "%i"
ইংগিউ আপনি

@ ডেভিডপস্টিল বা @মার্ক আপনি কি স্পষ্ট netstatকরতে পারেন "এ থেকে অতিরিক্ত ক্ষেত্রগুলি টোকেন যুক্ত করে যুক্ত করা যায়?"
ইয়ভেস শেল্পে

2

আপনি যদি পিএস ব্যবহারের শখ করেন তবে আপনি এই কোডটি কাঁটাচামচ করতে পারেন (দ্রষ্টব্য: এটি অতি-বেসিক)

$nets = netstat -ano | select-string LISTENING
foreach($n in $nets){
    # make split easier PLUS make it a string instead of a match object:
    $p = $n -replace ' +',' '
    # make it an array:
    $nar = $p.Split(' ')
    # pick last item:
    $pname = $(Get-Process -id $nar[-1]).ProcessName
    $ppath = $(Get-Process -id $nar[-1]).Path
    # print the modified line with processname instead of PID:
    $n -replace "$($nar[-1])","$($ppath) $($pname)"
}

নোট করুন যে আপনি একটি সম্পূর্ণ এক্সিকিউটেবল পাথ পাওয়ার Pathপরিবর্তে চেষ্টা করতে পারেন ProcessName- যদিও এটি সিস্টেম পরিষেবাদিতে কাজ করবে না। এছাড়াও, আপনি ProcessNameপিআইডি মান প্রতিস্থাপনের পরিবর্তে লাইনটির শেষ প্রান্তে যুক্ত করতে চাইতে পারেন want

উপভোগ কর ;)


1

এটি ব্যবহার করার চেষ্টা করুন ...

সময় স্ট্যাম্প সহ প্রক্রিয়া নাম :) অনিলিনেয়ারে ... দ্রুত এবং সহজ স্ক্রিপ্ট করার দরকার নেই ...

আপনি ESTABLISHED বা তালিকাবদ্ধ করে SYN_SENT প্যারাম পরিবর্তন করতে পারেন

filter timestamp {"$(Get-Date -Format G): $_"};netstat -abno 1 | Select-String -Context 0,1 -Pattern LISTENING|timestamp

filter timestamp {"$(Get-Date -Format G): $_"};netstat -abno 1 | Select-String -Context 0,1 -Pattern SYN_SENT|timestamp

আমি এটি আইপি: পোর্টটিতে একটি নিদর্শন সহ ব্যবহার করেছি I দুর্দান্ত স্নিপেট!
অ্যালেক্স

0

খুব সুন্দর এরিক বিটেমো! আমি সেই পথটির জন্য একটি ভেরিয়েবল যুক্ত করার কথা ভাবছিলাম তখন আমি বুঝতে পেরেছিলাম যে আপনার কাছে এটি ইতিমধ্যে রয়েছে যদিও এটি সংজ্ঞায়িত হয়নি। সুতরাং আমি যে কোডটি পুনরায় ব্যবহার করেছি তা হ'ল:

$nets = netstat -ano |select-string LISTENING;
foreach ($n in $nets)
    {
# make split easier PLUS make it a string instead of a match object
    $p = $n -replace ' +',' ';
# make it an array
    $nar = $p.Split(' ')
# pick last item...
    $pname = $(Get-Process -id $nar[-1]).ProcessName
    $ppath = $(Get-Process -id $nar[-1]).Path;
# print the modified line with processname instead of PID
    $n -replace "$($nar[-1])","$($ppath) $($pname)" | where {$pname -like "*GMSVP*"}
     }

আমি কোনও অ্যাপ্লিকেশনটির জন্য প্রক্রিয়া এবং পরিষেবাগুলি সন্ধান করার চেষ্টা করছিলাম যেখানে আমি কিছুটা ভিন্ন 2 লাইনার ব্যবহার করেছি।

Get-Service | select status,name,displayname,servicename | where {($_.DisplayName -like "myserv*") -or ($_.servicename -like "post*")} | ft -auto

Get-Process | select id, processname,cpu,path,description | where {$_.path -like "*myserv*"} | ft -auto

আমি আপনার সমাধানটি অন্তর্ভুক্ত করতে এরিকের প্রশ্নটি সম্পাদিত করেছি, তাই আপনি যদি চান তবে আপনি এটি উত্তর থেকে মুছতে পারেন এবং GetServiceএবং এর সাথে আপনার পদ্ধতির উপর মনোনিবেশ করতে পারেন Get-Process
ফ্লোলিও
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.