Shell-Script

如何在 OpenWRT 中使用 uci 命令獲取所有配置選項

  • September 7, 2019

我正在配置一個執行 OpenWRT 的路由器,但我很難理解如何使用uci命令(統一配置界面)來檢查現有配置文件。我想在 shell 腳本中自動執行此配置。

/etc/config/firewall195 長的防火牆配置為例,使用cat.

有各種規則,以第一個規則為:

root@OpenWrt:/etc/config# grep -B1 -A6 'Allow-DHCP-Renew' /etc/config/firewall
config rule
   option name     Allow-DHCP-Renew
   option src      wan
   option proto        udp
   option dest_port    68
   option target       ACCEPT
   option family       ipv4

root@OpenWrt:/etc/config# 

我可以檢查第一條規則 ( @rule[0]) 的各個欄位,例如name具有以下內容的欄位:

root@OpenWrt:/etc/config# uci get firewall.@rule[0].name
Allow-DHCP-Renew
root@OpenWrt:/etc/config# 

但是我無法將整個規則視為輸出,我已經嘗試過,uci get firewall.@rule[0].*但這不是正確的語法。

uci( )沒有手冊man uci,所以我不確定在哪裡可以找到有關如何使用該命令的資訊。

這種“集體獲取”是否可能?

嗯…剛剛發現我需要使用uci show而不是uci get,請參見下面的範例:

root@OpenWrt:/etc/config# uci show firewall.@rule[0]
firewall.cfg0592bd=rule
firewall.cfg0592bd.name='Allow-DHCP-Renew'
firewall.cfg0592bd.src='wan'
firewall.cfg0592bd.proto='udp'
firewall.cfg0592bd.dest_port='68'
firewall.cfg0592bd.target='ACCEPT'
firewall.cfg0592bd.family='ipv4'
root@OpenWrt:/etc/config#

引用自:https://unix.stackexchange.com/questions/539477