Как перечислить весь уникальный IP-адрес, в настоящее время подключаемый к определенному порту?

Я думаю at команда - то, что Вы после.

Например:

echo "mail -s Test mstumm < /etc/group" | at 16:30

Это пошлет Вам по электронной почте копию /etc/group в 16:30.

Можно читать больше о at здесь: http://www.softpanorama.org/Utilities/at.shtml

5
10.04.2012, 23:12
4 ответа

Если Вы находитесь на Linux и можете обработать наличие ss установленный:

ss -o state established '( dport = :5222 )'|awk -F"[\t :]+" 'NR!=1{ ip[$5]+=1 } END{ for (i in ip){n++};print n }'

Если Вы хотели бы awk, объясненный просто сообщенным мне.

2
27.01.2020, 20:40
  • 1
    Большой awk {awesomeness} действительно! –  motobói 11.04.2012, 22:16
  • 2
    я думаю, что понял логику этого, но почему использование НОМЕР блока для заполнения хеша? оценка –  motobói 11.04.2012, 22:37
  • 3
    И большое спасибо за представляет меня ss! –  motobói 11.04.2012, 23:02
  • 4
    NR не заполняет хеш, мы просто используем его для пропуска заголовков. Для первой строки, NR будет равняться 1, затем следующая строка, которой это будет равняться 2 и так далее. Это хранит IP как индексное значение в IP [] массив. –  Jodie C 12.04.2012, 02:30

Установите надлежащего разделителя полей, затем используйте awk встроенное соответствие regex для избавлений от властей. Вот версия с передачей по каналу вывода к uniq. IMO, нет никакой реальной потребности в том, чтобы полностью заменить uniq некоторым кодом awk, потому что это становится менее простым и меньше unix-y.

netstat -nt  | gawk --re-interval -F':|[ ]+' '$7==5222 && $8=="ESTABLISHED" && $6 ~ /[0-9]{1,3}(\.[0-9]{1,3}){3}/{print $6}' | uniq

Но это не намного более сложно, и это все еще смотрит хорошо как острота:

netstat -nt  | gawk --re-interval -F':|[ ]+' '$7==5222 && $8=="ESTABLISHED" && $6 ~ /[0-9]{1,3}(\.[0-9]{1,3}){3}/{a[$6]} END{for (i in a) print i}'
1
27.01.2020, 20:40

Попробуйте это:

netstat -nt | awk '/:5222.*ESTABLISHED/ { split ($5, a, ":"); print a[1] }' | uniq | wc -l

Было бы возможно сделать uniq и туалет в awk также, конечно, но это, вероятно, будет более подробным.

1
27.01.2020, 20:40

Чтобы перечислить все уникальные IP-адреса, которые в настоящее время подключены к определенному порту:

netstat -ntu | egrep ':80|:443' | grep -v LISTEN | awk '{print $5}' | cut -d\t -f5 | grep -Po '[0-9]{1,3}(\.[0-9]{1,3}){3}' | sort | uniq -c | sort -rn | grep -v 127.0.0.1
1
27.01.2020, 20:40

Теги

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