嘿,所有我一直试图找到一些代码,将允许我通过UCI更新我的防火墙规则。
我目前添加新规则的方式如下:
uci add firewall rule
uci set firewall.@rule[21].name='B Macbook Air'
uci set firewall.@rule[21].src='lan'
uci set firewall.@rule[21].family='ipv4'
uci set firewall.@rule[21].src_ip='192.168.1.227'
uci set firewall.@rule[21].src_mac='00:00:00:00:00:00'
uci set firewall.@rule[21].dest='wan'
uci set firewall.@rule[21].proto='all'
uci set firewall.@rule[21].target='REJECT'
uci set firewall.@rule[21].enabled='1'
uci commit firewall
这将在**luci(branch(git-22.347.45520-d30ab74))**中生成正确的规则:
我更新其中一个规则"启用"或"禁用"的方法如下:
uci set firewall.@rule[21].name="B Macbook Air"
uci set firewall.@rule[21].enabled="1"
uci commit firewall
这工作如预期,但我想知道是否有一种方法太只是调用防火墙规则的名称,而不是需要知道的位置(即:[21])?
就像这样:
uci set firewall.@rule.name="B Macbook Air"
uci set firewall.@rule.enabled="1"
uci commit firewall
当然,上面的方法不起作用。给出的误差为
root@turris:~# uci设置防火墙。@www.example.com ="B Macbook Air"rule.name="B Macbook Air"
uci:无效参数
这可能做到吗?
1条答案
按热度按时间brvekthn1#
您可以编写一个循环来检查每个规则的
.name
。以下示例假定索引号从
0
开始,并且是连续的。(Not确定默认安装的是
bash
。示例代码在sh
中。)如果你需要经常这样做,就把它变成一个函数。如果索引号不连续,你需要稍微更新它。
另一种解决方案是使用
uci show firewall
:这样,您就不关心索引号是否连续。