Actualización continua de Netstat (el reloj cambia la salida)


18

Estoy usando este comando simple para monitorear conexiones (para lidiar con algunos ataques DoS recientes) en mi servidor Debian:

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

¿Cómo lo ejecuto continuamente? Por lo tanto, se actualizará una vez por minuto (o cualquier cantidad de tiempo, por supuesto). Intenté mirar:

watch -n 30 "netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n"

Pero cambió la salida de una buena lista con un número de conexiones a algo como esto:

1 tcp        0  10015 [LOCAL IP]
...
1 Proto Recv-Q Send-Q Local Address           Foreign Address         State
1 Active Internet connections (w/o servers)

Por lo tanto, no se muestra la IP externa. ¿Hay algo que me perdí?

Así es como se ve la salida original:

  2 [IP ADDRESS]
  4 [IP ADDRESS]
  4 [IP ADDRESS]
  4 [IP ADDRESS]
  7 [IP ADDRESS]
 16 [IP ADDRESS]
 71 [IP ADDRESS]

Y cuando digo [LOCAL IP]me refiero a la IP de mi máquina.

Cuando lo ejecuto -csimplemente se congela.


¿Estás ejecutando watch con privilegios de root? El comando se ve bien y parece comportarse como esperaría en mi máquina. Ejecutar sin no imprimirá las direcciones y, después de 30 segundos, podría imprimir un mensaje de error.

@StewartPlatt Lo ejecuto bajo la raíz. Agregué la salida del comando original. La cuestión es que cuando miro, solo muestra mi dirección IP y no muestra ninguna IP conectada a mí.

Respuestas:


22
netstat -c

puede ayudarte si no he entendido mal tu problema. -c significa - continuo.

EDITAR: ahí vas:

watch -n 30 "netstat -ntu | awk '{print \$5}' | cut -d: -f1 | sort | uniq -c | sort -n"

He agregado un \ before $.


Ya lo intenté, lo siento, no especifiqué esto en una pregunta. Simplemente se congela cuando agrego -c.

Me di cuenta de que los $ 5 se eliminan en la salida del reloj. Tal vez hay un problema de comillas. Estoy cavando en eso ..

gracias, es bueno saber acerca de escapar caracteres especiales en el reloj

1

Simplemente ejecuta un ciclo while que duerme durante 60 segundos

[root@host] $ while true
> do
> netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
> sleep 60
> done

Esto le dará la misma salida cada 60 segundos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.