Perintah mirip dengan netstat -np tetapi dikelompokkan berdasarkan negara dan PID?


9

Apakah ada perintah yang mirip netstat -nptetapi dikelompokkan berdasarkan negara dan PID ?

Saya ingin mengetahui hitungan koneksi server saat ini dalam keadaan tertentu yang dikelompokkan berdasarkan Program.

mirip dengan,

102 squid ESTABLISHED
32 httpd ESTABLISHED

Saya menggunakan RHEL5.

Jawaban:


11

Anda dapat menggunakan sortuntuk mengatur kembali output netstatdalam format apa pun yang Anda suka.

$ netstat -anpt 2>&1 | tail -n +5 | sort -k7,7 -k 6,6

Ini akan mengurutkan output menggunakan kolom ke-7 terlebih dahulu (nama proses / PID) diikuti oleh negara (ESTABLISHED, LISTEN, dll.).

CATATAN: Bagian pertama dari perintah, netstat -anpt 2>&1 | tail -n +5 ..akan mengarahkan semua output yang mungkin terjadi pada STDOUT ke STDIN juga dan kemudian memotong 5 baris pertama yang merupakan output boilerplate dari netstatmana kita tidak tertarik.

Contoh

$ netstat -anpt 2>&1 | tail -n +5 | sort -k7,7 -k 6,6
tcp        0      0 192.168.1.20:49309      192.168.1.103:631       ESTABLISHED 2077/gnome-settings 
tcp        0      0 192.168.1.20:38393      204.62.14.135:443       ESTABLISHED 2260/mono           
tcp        0      0 192.168.1.20:39738      74.125.192.125:5222     ESTABLISHED 2264/pidgin         
tcp        0      0 192.168.1.20:40097      87.117.201.130:6667     ESTABLISHED 2264/pidgin         
tcp        0      0 192.168.1.20:53920      217.168.150.38:6667     ESTABLISHED 2264/pidgin         
...
tcp        1      0 192.168.1.20:50135      190.93.247.58:80        CLOSE_WAIT  24714/google-chrome 
tcp        1      0 192.168.1.20:44420      192.168.1.103:631       CLOSE_WAIT  24714/google-chrome 
tcp        0      0 192.168.1.20:36892      74.125.201.188:5228     ESTABLISHED 24714/google-chrome 
tcp        0      0 192.168.1.20:43778      74.125.192.125:5222     ESTABLISHED 24714/google-chrome 
tcp        0      0 192.168.1.20:33749      198.252.206.140:80      ESTABLISHED 24714/google-chrome 
...

Anda dapat menggunakan pendekatan serupa untuk mendapatkan penghitungan menggunakan berbagai alat seperti wcatau uniq -c.

Mengubah output

Jika Anda benar-benar ingin mendapatkan hasil netstatseperti ini:

102 squid ESTABLISHED
32 httpd ESTABLISHED

Anda dapat melakukan beberapa pengirisan dan pemotongan lebih lanjut menggunakan awk& sed. Ini bisa dibuat lebih ringkas, tetapi harus membantu Anda memulai dan melakukan pekerjaan.

$ netstat -anpt 2>&1 | tail -n +5 | awk '{print $7,$6}' | sort -k1,1 -k3,3 \
    | sed 's#/# #' | column -t
2264   pidgin          ESTABLISHED
2264   pidgin          ESTABLISHED
24714  google-chrome   CLOSE_WAIT
24714  google-chrome   CLOSE_WAIT
24714  google-chrome   ESTABLISHED
24714  google-chrome   ESTABLISHED
...
24714  google-chrome   ESTABLISHED
26358  ssh             ESTABLISHED
26358  ssh             ESTABLISHED
26358  ssh             ESTABLISHED
26358  ssh             LISTEN
26358  ssh             LISTEN
26358  ssh             LISTEN

CATATAN: column -t cukup luruskan semua output dalam kolom yang bagus.

Menghitung koneksi

Akhirnya untuk melakukan apa yang Anda inginkan dalam hal penghitungan kejadian:

$ netstat -anpt 2>&1 | tail -n +5 | awk '{print $7,$6}' | sort -k1,1 -k3,3 \
    | sed 's#/# #' | column -t | uniq -c
  6 -      LISTEN
  8 -      TIME_WAIT
  1 2077   gnome-settings  ESTABLISHED
  1 2260   mono            ESTABLISHED
 10 2264   pidgin          ESTABLISHED
  2 24714  google-chrome   CLOSE_WAIT
 27 24714  google-chrome   ESTABLISHED
  3 26358  ssh             ESTABLISHED
  4 26358  ssh             LISTEN
  1 26359  ssh             ESTABLISHED
  4 3042   thunderbird     ESTABLISHED
  1 32472  monodevelop     ESTABLISHED
  2 32472  monodevelop     LISTEN
  1 32533  mono            ESTABLISHED
  1 32533  mono            LISTEN
  1 3284   monodevelop     LISTEN
  1 3365   mono            LISTEN
  1 4528   mono            LISTEN
  1 8416   dropbox         ESTABLISHED
  1 8416   dropbox         LISTEN

Kolom pertama mewakili jumlah.


Terima kasih atas jawaban yang mendetail - Saya akan memberikan suara ketika saya memiliki 15 perwakilan
Kingo

5

dari wikipedia

Di Linux, netstat(bagian dari "net-tools") sudah usang , ss(bagian dari iproute2) harus digunakan sebagai gantinya.

Paket net-tools belum melihat rilis Linux dalam lebih dari satu dekade. Itu waktu yang lama untuk pergi tanpa pembaruan untuk rangkaian program yang dirancang untuk mengelola dan memantau antarmuka komunikasi kernel yang terus berkembang - terutama ketika Anda berbicara tentang kernel yang secara praktis menjalankan internet.

Untungnya, ada paket iproute2 yang dipelihara secara aktif - yang mencakup ssutilitas.

Dengan ssAnda dapat melakukan hal yang Anda minta seperti:

ss -np state ESTABLISHED

dari man ss:

#USAGE EXAMPLES
   ss -t -a
#          Display all TCP sockets.
#
   ss -t -a -Z
#          Display all TCP sockets with process SELinux
#          security contexts.
#
   ss -u -a
#          Display all UDP sockets.
#
   ss -o state established '( dport = :ssh or sport  =   :ssh )'
#          Display all established ssh connections.
#
   ss -x src /tmp/.X11-unix/*
#          Find  all  local  processes  connected  to X server.
#
   ss -o state fin-wait-1 '( sport = :http or sport  = :https )' dst 193.233.7/24
#          List all the tcp sockets in state FIN-WAIT-1
#          for our apache to network  193.233.7/24  and
#          look at their timers.

0

Anda bisa menggunakan netstat, kolom, dan awk:

netstat -anpt | column -t | awk '{print $1,$6,$7}'

Ini mencetak kolom pertama, keenam, dan ketujuh.

tcp LISTEN -
tcp LISTEN -
tcp ESTABLISHED 2084/firefox
tcp ESTABLISHED 2084/firefox
tcp6 LISTEN -
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.