我认为ss
是提取连接信息的好工具。我想要一个命令,用最详细的信息询问它,但只返回包含WAN源IP地址的行。
例如,我想根据sudo ss -antu
:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp ESTAB 0 0 192.168.12.1:38932 211.54.192.102:443
tcp SYN-RECV 0 0 ::ffff:192.168.12.1:80 ::ffff:69.59.249.6:59937
tcp ESTAB 0 750 ::ffff:192.168.12.1:80 ::ffff:69.59.249.6:59498
简而言之,列表中没有:
(127\.) | (10\.) | (172\.1[6-9]\.) | (172\.2[0-9]\.) | (172\.3[0-1]\.) | (192\.168\.)
如何解决这个问题?正则表达式不是我的 forte 。
答案 0 :(得分:0)
通过可以进行逐位数学运算来确定ip地址是否属于ip块,可以更好地解决这个问题。这是使用perl模块Net :: CIDR的示例。如果它不属于3个RFC1918专用网络之一,它将打印一个IP地址:
perl -mNet::CIDR -ne 'print unless Net::CIDR::cidrlookup($_, ("10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"))'