我知道tcpdrop
哪个在基础发行版中。但是这个工具需要指定端口号。有没有可以通过 IP 断开连接的工具?
答案1
嗯,我认为您可以使用一些 unix 工具来为您提供正确的 tcpdrop 语法,然后在您自己的脚本中通过 xargs 运行它。这是一个丑陋的例子,可能有更漂亮的方法:
netstat -an | grep $IPADDR | awk '{print $4"."$5}' | awk -F '\.' '{print $1"."$2"."$3"."$4" "$5" "$6"."$7"."$8"."$9" "$10}' | xargs tcpdrop
这将使用 awk 剥离出两个 IP/端口对,然后用点将它们粘合在一起,以便您可以使用另一个 awk 来吐出所需的点分四路空间端口语法。
可能有一个更简洁、更清晰的一体化正则表达式。$IPADDR 是您要删除的 IP。
答案2
顺便说一句,较新版本tcpdrop(1)
具有-a
和-l
标志,使其可以轻松“grepable”:
[savetherbtz@host ~]$ tcpdrop -l -a | grep 127.0.0.1
tcpdrop 127.0.0.1 10006 127.0.0.1 14796
tcpdrop 127.0.0.1 10006 127.0.0.1 13794
tcpdrop 127.0.0.1 10006 127.0.0.1 12996
tcpdrop 127.0.0.1 10006 127.0.0.1 12208
tcpdrop 127.0.0.1 10018 127.0.0.1 27132
tcpdrop 127.0.0.1 27132 127.0.0.1 10018
tcpdrop 127.0.0.1 10018 127.0.0.1 24355
tcpdrop 127.0.0.1 24355 127.0.0.1 10018
一旦对输出满意,您就可以将其通过管道传回 sh 以执行终止:
[savetherbtz@host ~]$ tcpdrop -l -a | grep 127.0.0.1 | sh