Извлечь IP из вывода netstat - PullRequest
       22

Извлечь IP из вывода netstat

8 голосов
/ 12 сентября 2010

Вывод netstat содержит что-то вроде ...

tcp        0      0 0.0.0.0:80       221.126.149.99:51973    ESTABLISHED 23879/apache2
tcp        0      0 0.0.0.0:80        66.249.68.154:40883     ESTABLISHED 23899/apache2
tcp        0      0 0.0.0.0:80       66.249.68.81:41200      ESTABLISHED 23892/apache2
tcp        0      0 0.0.0.0:80       66.249.67.121:59355     ESTABLISHED 23905/apache2
tcp        0   4465 0.0.0.0:80       110.75.175.27:48139     ESTABLISHED 23901/apache2

Я использую эти команды

netstat -anpt|grep apache2 |grep ESTABLISHED | awk -F "[ :]" '{print $4}'

Мне не удалось получить IP, есть подсказки?

Ответы [ 5 ]

12 голосов
/ 13 сентября 2010

Это вернет список уникальных IP-адресов, которые вы тоже подключили:

netstat -anpt | grep apache2 |grep ESTABLISHED | awk '{ print $5 }' | cut -d: -f1 | sort -u

Ну, я думаю, мне нужно поменять очки тоже = P

2 голосов
/ 12 сентября 2010

Вы можете попробовать

netstat -anpt|awk 'BEGIN {FS="[ :]+"};/ESTABLISHED/ && /apache/{print $6}'  

По какой-то причине Я считаю 6 полей, а все остальные считают 4 ... Стоит ли покупать новые очки?:)

HTH!

2 голосов
/ 12 сентября 2010
netstat -anpt | awk '/apache2/&&/ESTABLISHED/{sub(/:*/,"",$4);print $4} ' 
2 голосов
/ 12 сентября 2010

Ты действительно близко. Вам просто нужно изменить регулярное выражение разделителя полей, чтобы оно не рассматривало один пробел или двоеточие в качестве разделителя полей:

netstat -anpt|grep apache2 |grep ESTABLISHED | awk -F "[ :]*" '{print $4}'
0 голосов
/ 05 сентября 2012
 netstat -ant | grep 80 | wc -l
...