知识产权地址和正则表达;过滤所有WAN IP

时间:2016-04-14 00:06:03

标签: regex bash regex-negation ss

我认为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

1 个答案:

答案 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"))'