Постійне оновлення Netstat (годинник змінює вихід)


18

Я використовую цю просту команду для моніторингу з'єднань (для вирішення деяких останніх DoS-атак) на моєму сервері Debian:

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

Як я його запускаю постійно? Таким чином, він буде оновлюватися один раз на хвилину (або будь-яку кількість часу, звичайно). Я спробував спостерігати:

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

Але це змінило вихід з приємного списку з кількістю підключень на щось подібне:

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

Тому зовнішній IP не відображається. Щось я пропустив?

Ось як виглядає оригінальний вихід:

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

І коли я кажу, [LOCAL IP]я маю на увазі IP своєї машини.

Коли я запускаю його, -cвін просто замерзає.


У вас працює годинник з привілеями root? Команда виглядає звуковою і, здається, поводиться так, як я очікував би на своїй машині. Працюючи без, не буде надруковано адреси, і через 30 секунд може надрукуватися повідомлення про помилку.

@StewartPlatt Я запускаю його під корінь. Я додав вихідний командний вихід. Річ у тім, що я дивлюся - вона видає лише моє оголошення з IP-адресою, взагалі не виводить підключені до мене IP-адреси.

Відповіді:


22
netstat -c

може допомогти вам, якщо я не зрозумів вашу проблему. -c означає - безперервний.

РЕДАКТУВАТИ: там ви йдете:

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

Я додав \ до $.


Я вже намагався, вибачте, що не вказав це у запитанні. Він просто застигає, коли я додаю -c.

Я зрозумів, що 5 доларів знімаються на виході годинника. Можливо, виникла лапка. Я копаю на ньому ..

дякую, добре знати про втечу спеціальних знаків у вахті

1

Просто запустіть цикл, який спить протягом 60 секунд

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

Це дасть вам однаковий вихід кожні 60 секунд

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.