Как сказано в заголовке, как можно проверить количество открытых подключений к веб-серверу на порте 80 и 443?
В настоящее время я использую этот oneliner, чтобы получить количество открытых подключений на IP-адрес с порта 80:
netstat -tn 2>/dev/null |
grep :80 |
grep -i established |
awk '{print $5}' |
cut -d: -f1 |
sort |
uniq -c |
sort -nr |
head
Как добавить номер порта 443 к этому запросу? Я пробовал следующее :
netstat -tn 2>/dev/null |
grep ':80/|:443' |
grep -i established |
awk '{print $5}' |
cut -d: -f1 |
sort |
uniq -c |
sort -nr |
head
но в итоге я получил 0 результатов, я что-то сделал не так?
Попробуйте
netstat -ant | egrep '(:80|:443) .*:.*ESTABLISHED' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c
или
netstat -nt | awk '$4 ~ /:(143|993)$/ && $6 ~ /ESTABLISHED/ {print $5}' | cut -d: -f1 | sort | uniq -c
netstat -nt
перечисляет TCP-соединения без DNS поиска IP-адресаegrep ':(80|443) .*:. *ESTABLISHED"
выбирает ESTABLISHED соединения на портах 80, ограничиваясь локальным адресом'awk {print $5}'
разделяет удаленный адрес и портcut -d: -f1
удаляет портsort | uniq -c
считает uniq ips
awk '$4 ~ /: (80|443)$/ && $6 ~ /ESTABLISHED/ {print $5}'
выбирает удаленный ip для ESTABLISHED соединений с локальными портами 80 и 443
Правка:
Если вы хотите считать соединения по IP, вы можете использовать {print $4, $5}
в заявлении для печати.
Вы можете установить соответствие в разных или нескольких состояниях, изменив соответствие на $6
, например, /(ESTAB|SYN)/
, что будет включать в себя открывающие соединения.