Netstat kontinuierliche Aktualisierung (Uhr ändert die Ausgabe)

18

Ich benutze diesen einfachen Befehl, um Verbindungen auf meinem Debian-Server zu überwachen (um mit einigen kürzlichen DoS-Angriffen fertig zu werden):

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

Wie führe ich es kontinuierlich aus? Daher aktualisiert es sich einmal pro Minute (oder natürlich nach einer bestimmten Zeitspanne). Ich habe versucht zu sehen:

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

Die Ausgabe von nice list mit der Anzahl der Verbindungen wurde jedoch folgendermaßen geändert:

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

Externe IP wird also nicht angezeigt. Gibt es etwas, das ich verpasst habe?

So sieht die Originalausgabe aus:

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

Und wenn ich sage, [LOCAL IP]meine ich die IP meines Rechners.

Wenn ich es damit laufen -classe, friert es einfach ein.

Ruslan Osipov
quelle
Laufen Sie Watch mit Root-Rechten? Der Befehl sieht gut aus und scheint sich so zu verhalten, wie ich es auf meinem Computer erwarten würde. Wenn Sie ohne ausgeführt werden, werden die Adressen nicht gedruckt. Nach 30 Sekunden wird möglicherweise eine Fehlermeldung ausgegeben.
@StewartPlatt Ich starte es unter root. Ich habe die ursprüngliche Befehlsausgabe hinzugefügt. Die Sache ist, wenn ich zuschaue - es gibt nur meine IP-Adresse aus und es werden überhaupt keine mit mir verbundenen IPs ausgegeben.

Antworten:

22
netstat -c

kann Ihnen helfen, wenn ich Ihr Problem nicht missverstanden habe. -c steht für --continuous.

EDIT: los geht's

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

Ich habe ein \ vor $ hinzugefügt.

hcg
quelle
schon ausprobiert, sorry das habe ich in einer frage nicht angegeben. Es friert nur ein, wenn ich -c hinzufüge.
Mir wurde klar, dass die 5 $ am Ausgang der Uhr entfernt werden. Vielleicht liegt ein Anführungszeichen vor. Ich grabe
danke, gut zu wissen, wie man besonderen Zeichen in watch
1

Führen Sie einfach eine while-Schleife aus, die 60 Sekunden lang ruht

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

Dadurch erhalten Sie alle 60 Sekunden die gleiche Ausgabe

Chris Alderson
quelle