从netstat输出中提取IP

时间:2010-09-12 05:17:22

标签: shell awk netstat

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 个答案:

答案 0 :(得分:12)

这将返回您连接的唯一IP地址列表:

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

嗯,我想我还需要更换眼镜= P

答案 1 :(得分:2)

你真的很亲密。您只需要更改字段分隔符正则表达式,这样它就不会将单个空格或冒号视为字段分隔符:

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

答案 2 :(得分:2)

您可以尝试

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

出于某种原因正在计算6个字段,而其他人都在计算4个...我应该买新眼镜吗? :)

HTH!

答案 3 :(得分:2)

netstat -anpt | awk '/apache2/&&/ESTABLISHED/{sub(/:*/,"",$4);print $4} ' 

答案 4 :(得分:-1)

 netstat -ant | grep 80 | wc -l