UCI。 Lua脚本。如何编辑防火墙规则

时间:2017-06-15 05:08:13

标签: lua openwrt luci uci

我在配置中为一台主机重定向规则,但有时我需要更改IP。

firewall.@redirect[0]=redirect
firewall.@redirect[0].name='zd_ssh'
firewall.@redirect[0].src='wan'
firewall.@redirect[0].proto='tcp'
firewall.@redirect[0].src_dport='8422'
firewall.@redirect[0].dest='lan'
firewall.@redirect[0].dest_port='22'
firewall.@redirect[0].target='DNAT'
firewall.@redirect[0].dest_ip='192.168.1.200'
firewall.@redirect[1]=redirect
firewall.@redirect[1].name='zd_https'
firewall.@redirect[1].src='wan'
firewall.@redirect[1].proto='tcp'
firewall.@redirect[1].src_dport='8443'
firewall.@redirect[1].dest='lan'
firewall.@redirect[1].dest_port='443'
firewall.@redirect[1].target='DNAT'
firewall.@redirect[1].dest_ip='192.168.1.200'

现在我遇到了在我的脚本中添加规则的问题

uci_cursor:set("firewall", "firewall.@redirect[0]", "dest_ip", "192.168.1.200")
uci_cursor:set("firewall", "firewall.@redirect[1]", "dest_ip", "192.168.1.200")

它不起作用。我在openwrt wiki中发现“防火墙”“是一种类型,而不是一个部分”。 部分应该看起来像cfg​​02f02f

现在的问题是:如何找到这个cfg02f02f?

uci_cursor:get_all(“system”)没有给我看任何东西。

1 个答案:

答案 0 :(得分:1)

终于找到了解决方案:

require "uci"
x = uci.cursor()

x:foreach("firewall", "redirect", function(s)
     print('------------------')
     for key, value in pairs(s) do
         print(key .. ': ' .. tostring(value))
     end
end)