¿Comando similar a netstat -np pero agrupado por estado y PID?

9

¿Hay un comando similar netstat -nppero agrupado por estado y PID ?

Me gustaría saber el recuento actual de conexiones de servidor en un estado particular agrupado por Programas.

Similar a,

102 squid ESTABLISHED
32 httpd ESTABLISHED

Yo uso RHEL5.

Kingo
fuente

Respuestas:

11

Puede utilizar sortpara reorganizar la salida de netstaten cualquier formato que desee.

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

Esto ordenará la salida usando primero la séptima columna (el nombre del proceso / PID) seguido del estado (ESTABLECIDO, ESCUCHAR, etc.).

NOTA: La primera parte del comando, netstat -anpt 2>&1 | tail -n +5 ..dirigirá toda la salida que puede ocurrir en STDOUT a STDIN también y luego cortará las primeras 5 líneas que son salidas repetitivas de las netstatcuales no estamos interesados.

Ejemplo

$ 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 
...

Puede utilizar un enfoque similar para obtener los recuentos utilizando diversas herramientas como wco uniq -c.

Cambiar la salida

Si realmente desea obtener el resultado de netstatverse así:

102 squid ESTABLISHED
32 httpd ESTABLISHED

Puede cortar y cortar más en cubitos usando awk& sed. Esto puede hacerse más compacto, pero debería ayudarlo a comenzar y hacer el trabajo.

$ 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

NOTA: column -t simplemente alinea toda la salida en buenas columnas.

Contando las conexiones

Finalmente, para hacer lo que quiera en términos de contar las ocurrencias:

$ 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

La primera columna representa los recuentos.

slm
fuente
Gracias por una respuesta tan detallada. Voy a votar cuando tenga 15 representantes
Kingo
5

de wikipedia

En Linux, netstat(parte de "net-tools") está en desuso , ss(parte de iproute2) debería usarse en su lugar.

El paquete de herramientas de red no ha visto una versión de Linux en más de una década. Eso es mucho tiempo sin una actualización para un conjunto de programas diseñado para administrar y monitorear las interfaces de comunicaciones de un núcleo en constante evolución, especialmente cuando se habla del núcleo que prácticamente ejecuta Internet.

Afortunadamente, existe el paquete iproute2 mantenido activamente , que incluye la ssutilidad.

Con ssusted puede hacer lo que pide como:

ss -np state ESTABLISHED

de 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.
mikeserv
fuente
0

Puede usar netstat, column y awk:

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

Esto imprime la primera, sexta y séptima columna.

tcp LISTEN -
tcp LISTEN -
tcp ESTABLISHED 2084/firefox
tcp ESTABLISHED 2084/firefox
tcp6 LISTEN -
Jeight
fuente