Aggiornamento continuo di Netstat (l'orologio modifica l'output)


18

Sto usando questo semplice comando per monitorare le connessioni (per gestire alcuni recenti attacchi DoS) sul mio server Debian:

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

Come lo eseguo continuamente? Quindi si aggiorna automaticamente una volta al minuto (o qualsiasi dato periodo di tempo, ovviamente). Ho provato a guardare:

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

Ma ha cambiato l'output dalla bella lista con un numero di connessioni a qualcosa del genere:

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

Quindi l'IP esterno non viene visualizzato. C'è qualcosa che mi sono perso?

Ecco come appare l'output originale:

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

E quando dico [LOCAL IP]intendo l'IP della mia macchina.

Quando lo eseguo si -cblocca.


Stai eseguendo watch con i privilegi di root? Il comando sembra valido e sembra comportarsi come mi aspetterei sulla mia macchina. L'esecuzione senza stampa non stampa gli indirizzi e, dopo 30 secondi, potrebbe stampare un messaggio di errore.

@StewartPlatt Lo eseguo sotto root. Ho aggiunto l'output del comando originale. Il fatto è che, quando lo guardo, genera solo il mio annuncio con indirizzo IP e non genera alcun IP collegato a me.

Risposte:


22
netstat -c

può aiutarti se non ho frainteso il tuo problema. -c sta per --continuous.

EDIT: ecco qua:

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

Ho aggiunto un \ prima di $.


già provato, scusa se non l'ho specificato in una domanda. Si blocca quando aggiungo -c.

Mi sono reso conto che, $ 5 viene rimosso all'uscita di watch. Forse c'è un problema tra virgolette. Ci sto scavando ..

grazie, buono a sapersi

1

Basta eseguire un ciclo while che dorme per 60 secondi

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

Questo ti darà lo stesso output ogni 60 secondi

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.