gpt4 book ai didi

bash - 检查 iptables 用户链是否存在的最佳方法

转载 作者:行者123 更新时间:2023-11-29 08:54:12 29 4
gpt4 key购买 nike

我正在尝试以编程方式创建用户链并在 iptables 中删除它们。我想知道检查用户链是否存在以及是否不创建它的最佳方法是什么。

最佳答案

使用 iptables(8) 列出链,将 stdout/stderr 重定向到 /dev/null,并检查退出代码。如果链存在,iptables 将退出 true。

这个 shell 函数来 self 的 iptables 前端脚本:

chain_exists()
{
[ $# -lt 1 -o $# -gt 2 ] && {
echo "Usage: chain_exists <chain_name> [table]" >&2
return 1
}
local chain_name="$1" ; shift
[ $# -eq 1 ] && local table="--table $1"
iptables $table -n --list "$chain_name" >/dev/null 2>&1
}

请注意,我使用了 -n 选项,这样 iptables 就不会尝试将 IP 地址解析为主机名。如果没有这个,你会发现这个功能会很慢。

然后您可以使用此函数有条件地创建一个链:

chain_exists foo || create_chain foo ...

其中 create_chain 是另一个创建链的函数。您可以直接调用 iptables,但上面的命名使发生的事情一目了然。

关于bash - 检查 iptables 用户链是否存在的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10775863/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com