Непрерывное обновление 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 Я запускаю его под root. Я добавил оригинальный вывод команды. Дело в том, что когда я смотрю - он выводит только мой 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 секунд

Крис Олдерсон
источник