使用iptables(8)列出链,将stdout / stderr重定向到/ dev / null,并检查退出代码.如果链存在,iptables将退出true.
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 ...
原文地址:https://www.jb51.cc/bash/383864.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。