Ciągłe odświeżanie Netstat (zegarek zmienia dane wyjściowe)

18

Używam tego prostego polecenia do monitorowania połączeń (aby poradzić sobie z niektórymi niedawnymi atakami DoS) na moim serwerze Debian:

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

Jak mam go ciągle obsługiwać? Odświeża się więc raz na minutę (lub w dowolnym określonym czasie). Próbowałem oglądać:

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

Ale zmieniło wyjście z ładnej listy z liczbą połączeń na coś takiego:

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

Dlatego zewnętrzny adres IP nie jest wyświetlany. Czy coś mi umknęło?

Tak wygląda oryginalne wyjście:

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

A kiedy mówię, [LOCAL IP]mam na myśli adres IP mojej maszyny.

Kiedy go uruchomię -c, po prostu zawiesza się.

Ruslan Osipov
źródło
Czy korzystasz z zegarka z uprawnieniami administratora? Polecenie wygląda na prawidłowe i wydaje się zachowywać tak, jakbym oczekiwał na moim komputerze. Uruchomienie bez spowoduje wydrukowanie adresów i po 30 sekundach może wydrukować komunikat o błędzie.
@StewartPlatt Pracuję pod rootem. Dodałem oryginalne wyjście polecenia. Chodzi o to, że kiedy oglądam - wyświetla tylko mój adres IP, reklama w ogóle nie wyświetla podłączonych do mnie adresów IP.

Odpowiedzi:

22
netstat -c

może ci pomóc, jeśli nie zrozumiałem twojego problemu. -c oznacza - ciągły.

EDYCJA: proszę bardzo:

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

Dodałem \ przed $.

hcg
źródło
już próbowałem, przepraszam, nie podałem tego w pytaniu. Po prostu zawiesza się, gdy dodam -c.
Uświadomiłem sobie, że 5 USD jest usuwane na wyjściu zegarka. Może występuje problem ze znakiem cudzysłowu.
dziękuję, dobrze wiedzieć o ucieczce specjalnych znaków w zegarku
1

Wystarczy uruchomić pętlę while, która śpi przez 60 sekund

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

To daje tę samą moc co 60 sekund

Chris Alderson
źródło