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