Назад | Перейти на главную страницу

Непрерывное обновление Netstat (часы меняют вывод)

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

netstat -c

может помочь вам, если я правильно понял вашу проблему. -c означает --continuous.

РЕДАКТИРОВАТЬ: вот и все:

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

Я добавил \ перед $.

Здесь заканчивается поиск команды для macos. Для тех пользователей Mac, которые хотят видеть соединения процесса в реальном времени:

nettop -p 60683

Вы также можете ограничить тип интерфейса, например Wi-Fi или проводной ...

nettop -t wifi -n -p 60683

Просто запустите цикл while, который спит 60 секунд

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

Это будет давать одинаковый результат каждые 60 секунд.

Мониторинг на Ubuntu 18.04 LTS, это хорошо сработало. Он отображает хорошо читаемый человеком вывод.

sudo netstat -tupnc