我必须从为端口提供的iptables中删除一些规则。我正在尝试使用行号删除规则。因此一个端口可以有多个规则,因此可以有多个行号。如何使用xargs在单个命令中实现这一点?
这是我试过的(端口号69):
iptables-l forward——行号grep“dpt:69”cut-d''-f1 xargs iptables-d forward
如果只有一条规则,这将起作用。但会在多个行号上抛出错误“错误参数”。
最佳答案
默认情况下,xargs
将假定命令可以接受一个命令上的多个输入。例如,echo file1 file2 file3 | xargs rm
只发出一个rm
命令来删除3个文件,这样就可以了。
如果命令有限制,则需要告诉xargs
:
xargs -n1 iptables -D FORWARD
…这意味着“每个命令只能有一个参数”。如果您使用
-i
在某个特定的地方插入参数,那么这个参数也会起作用。顺便说一句,如果你把这个放在脚本中,那么你也应该考虑添加
--no-run-if-empty
,否则即使grep
什么也找不到,它仍然会运行这个命令。关于linux - 如何使用xargs删除iptables规则?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33078501/