如何在bash脚本中加入两个条件?

AJCG

注意:更新6月28日

我有一个规则的iptables script.sh(由bash解释):

function run_ips(){
for ip in $(sed '/#.*/d' ips.txt); do
  if echo $ip | grep -q "-" >/dev/null; then
    iptables -A FORWARD -m mac --mac-source $mac -o eth0 -p tcp --dport 443 -m iprange --dst-range "$ip" -j ACCEPT
  else
    iptables -A FORWARD -m mac --mac-source $mac -o eth0 -p tcp --dport 443 -d $ip -j ACCEPT
  fi
done
}
for mac in $(awk -F";" '{print $2}' macs.txt); do
   iptables -t nat -A PREROUTING -i eth1 -m mac --mac-source $mac -p tcp --dport 80 -j REDIRECT --to-port 8080
   iptables -A INPUT -i eth1 -m mac --mac-source $mac -p tcp --dport 8080 -j ACCEPT
   run_ips
done

其中macs.txt包含macs地址,而ips.txt包含ips地址或范围,以“-”分隔

错误:另一个应用程序当前持有xtables锁定。也许您想使用-w选项?

(这是由函数“ run_ips”生成的)

如何统一这两个部分?

DKing

我认为这里不需要功能。如果确实需要函数,则最好将变量作为参数传递,而不是尝试将其用作全局变量。但是,嵌套循环似乎很简单:

for mac in $(awk -F";" '{print $2}' macs.txt); do
    iptables -t nat -A PREROUTING -i eth1 -m mac --mac-source $mac -p tcp --dport 80 -j REDIRECT --to-port 8080
    iptables -A INPUT -i eth1 -m mac --mac-source $mac -p tcp --dport 8080 -j ACCEPT
    for ip in $(sed '/#.*/d' ips.txt); do
      if echo $ip | grep -q "-" >/dev/null; then
        iptables -A FORWARD -m mac --mac-source $mac -o eth0 -p tcp --dport 443 -m iprange --dst-range "$ip" -j ACCEPT
      else
        iptables -A FORWARD -m mac --mac-source $mac -o eth0 -p tcp --dport 443 -d $ip -j ACCEPT
      fi
    done
done

至于错误消息,似乎您正在处理这些规则的同时正在运行一个进程。-w如错误提示所示,也许您应该仅将其添加到iptables行中。此选项应使iptables等待xtables锁释放。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在PHP中加入两个多维数组

来自分类Dev

如何在sqlalchemy中加入两个KeyedTuple对象?

来自分类Dev

如何在Android中加入(字面上)两个/多个ContentProvider?

来自分类Dev

如何在PostgreSQL中加入更多然后两个表?

来自分类Dev

如何在MongoDB中加入两个聚合结果?

来自分类Dev

如何在Excel VBA中加入从两个不同数据源创建的两个记录集

来自分类Dev

如何在Scala中加入两个列表?

来自分类Dev

在LINQ中加入两个列表

来自分类Dev

如何在Scala和Apache Spark中加入两个DataFrame?

来自分类Dev

如何在猫鼬中加入两个收藏

来自分类Dev

如何在h2o流中加入两个框架?

来自分类Dev

如何在nestjs中加入两个模式?

来自分类Dev

如何在bash脚本中迭代两个变量?

来自分类Dev

如何在MySQL中从同一表中加入两个选择

来自分类Dev

在mysql中加入两个表

来自分类Dev

如何在PHP中加入两个多维数组

来自分类Dev

我如何在mysql中加入两个不同的表

来自分类Dev

在sqlite中加入两个表

来自分类Dev

如何在bash脚本中比较两个日期?

来自分类Dev

如何在C#中加入两个列表?

来自分类Dev

从两个命令中加入`stdout`

来自分类Dev

如何在linux中加入两个文件?

来自分类Dev

如何在php中加入两个mysql表

来自分类Dev

如何在列表中加入两个向量的元素并根据原点向量保留名称?

来自分类Dev

如何在mysql数据库中加入两个表并获取记录。?

来自分类Dev

如何在mysql中加入两个表,但两者之间的日期不同?

来自分类Dev

如何在mysql中加入两个表记录

来自分类Dev

如何在pandas中加入两个DF并选择我想返回的列?

来自分类Dev

在 Keras 中加入两个 DirectoryIterator

Related 相关文章

热门标签

归档