Netstat считают соединения TIME_WAIT портом

Я могу получить отдельный TIME_WAIT, рассчитывает на порт,

netstat -nat | grep :11300 | grep TIME_WAIT | wc -l;

но как сделать это на основе всех портов, например:

11300   2900 connection
3306    1200 connection
80      890 connection
0
задан 18 September 2014 в 12:06
2 ответа

В эти дни я отправляю использовать sed для такого рода вещей.

$ netstat -nt | sed -r -n 's/^tcp +[0-9]+ +[0-9]+ [0-9\.]+(:[0-9]+).+TIME_WAIT/\1/p' | sort | uniq -c | sort -n
      5 :443  
      8 :80

Здесь нам интересна строка, которая выглядит определенным образом, но на самом деле одна часть этого. Итак, мы определяем регулярное выражение с группой совпадений для этой части, а затем печатаем только совпадающий кусок строк, который нас интересует. Я не нашел лучшего способа sort | uniq -c . Последний вид предназначен для эстетики и полезности.

1
ответ дан 4 December 2019 в 17:11

Я уверен, что есть более чистый способ сделать это без двойного awk и двойного grep ». (Надеюсь, кто-нибудь сможет разъяснить это)

На основе оболочки ( ksh и bash ) Вывод For-Loop

for x in $ (netstat -nat | grep TIME_WAIT | awk '{print $4}' | \
            awk -F":" '{print $2}' | sort -u) ; do
   printf "TIME_WAIT on Port $x : `netstat -nat|grep ":$x"|grep TIME_WAIT|wc -l`\n"
done

TIME_WAIT on Port 42489 : 1
TIME_WAIT on Port 80 : 9
0
ответ дан 4 December 2019 в 17:11

Теги

Похожие вопросы