当我打字时,ss -atur
我得到了很多联系,但大多数都是注定的localhost
,而我并不真正关心这些。
如何过滤输出以不显示与目的地的连接localhost
?
我尝试过ss -atur '(dst ne localhost)'
但得到了Error: an inet prefix is expected rather than "(dst".
。没有括号我得到ss: bison bellows (while parsing filter): "syntax error!" Sorry.
。
我能做的最好的事情就是通过管道连接到 grep,但这无法区分localhost
源与目标(没有复杂的正则表达式模式)。
答案1
足够的语法是:
ss -atur '! dst localhost'
虽然我宁愿使用(注意括号和关键字之间的空格):
ss -atur '! ( dst 127.0.0.1 or dst [::1] )'
使用本地主机似乎有一个奇怪的行为:虽然它在 中按预期工作ss -atru '! dst localhost'
,但当不在否定中时,它似乎默认为 IPv4,除非用于ss -6
显示 IPv6 或ss -46
显示两者:我本来期望默认值是显示两者。
文档有点缺乏,正如中提到的这个问答。还有一些例子在 man 中,但是这个页面(可能使用旧的已删除文档)更有用:
https://www.cyberciti.biz/files/ss.html
(也可以在那里找到:http://linux-ip.net/gl/ss/ss-node5.html但上面的一页格式似乎更有用)