原文:http://developer.t-firefly.com/thread-1035-1-1.html
目錄:
1.UCI命令
2.UCI的文件和流程
3.UCI 的文件語法
4.UCI 命令讀寫配置
5.綜合實例
1.UCI命令
一個衆所周知的原因,在Linux下各種軟件包有各種不同的配置腳本,每個配置腳本的語法格式和操作方式不同,
這樣的設計雖然可以體現出各軟件包自身的優勢,同時也增加了學習曲線。在這一點上OpenWrt的UCI無疑處理的更
勝一籌。UCI是集中式配置信息管理接口(Unified Configuration Interface)的縮寫,他是OpenWrt引進的一套配置
參數管理系統。UCI管理了OpenWrt下最主要的系統配置參數並且提供了簡單、容易、標準化的人機交互接口。UCI中
已經包含了網絡配置、無線配置、系統信息配置等作爲基本路由器所需的主要配置參數。同時UCI也可以幫助開發人
員快速的建立一套基於OpenWrt的智能路由產品控制界面。
2.UCI的文件和流程
UCI的配置文件全部存儲在/etc/config目錄下。
- root@OpenWrt:/# ls /etc/config/
- dhcp dropbear firewall network system wireless
啓動的(以samba舉例):
1.啓動腳本/etc/init.d/samba
2.啓動腳本通過UCI分析庫從/etc/config/samba獲得啓動參數
3.啓動腳本完成正常啓動
由於UCI的數據文件較爲簡單,並且具備了很nice的直接觀感,所以配置文件既可以使用UCI
命令進行修改,也可以使用VI編輯器直接修改文件。但如果兩種方式都是用時需要注意UCI命
令修改會產生緩存,每次修改好要儘快確認保存避免出現衝突。
最常見的幾個UCI配置作用說明
文件 | 作用 |
/etc/config/dhcp | 面向LAN口提供的IP地址分配服務配置 |
/etc/config/dropbear | SSH服務配置 |
/etc/config/firewall | 路由轉發,端口轉發,防火牆規則 |
/etc/config/network | 自身網絡接口配置 |
/etc/config/system | 時間服務器時區配置 |
/etc/config/wireless | 無線網絡配置 |
3.UCI的文件語法
UCI文件語法舉例
- config 'section-type' 'section'
- option 'key' 'value'
- list 'list_key' 'list_value'
- config 'example' 'test'
- option 'string' 'some value'
- option 'boolean' '1'
- list 'collection' 'first item'
- list 'collection' 'second item'
config 節點 以關鍵字 config 開始的一行用來代表當前節點
section-type 節點類型
section 節點名稱
option 選項 表示節點中的一個元素
key 鍵
value 值
list 列表選項 表示列表形式的一組參數。
list_key 列表鍵
list_value 列表值
config 節點語法格式
- config 'section-type' 'section'
UCI 允許只有節點類型的匿名節點存在
節點類型和名字建議使用單引號包含以免引起歧義
節點中可以包含多個 option 選項或 list 列表選項。
節點遇到文件結束或遇到下一個節點代表完成。
option 選項語法格式
- option 'key' 'value'
選項的鍵與值建議使用單引號包含
避免相同的選項鍵存在於同一個節點,否則只有一個生效
list 列表選項語法格式
- list 'list_key' 'list_value'
選項的鍵與值建議使用單引號包含
列表鍵的名字如果相同,則相同鍵的值將會被當作數組傳遞給相應軟件
UCI 的語法容錯
- option example value
- option 'example' value
- option example "value"
- option "example" 'value'
- option 'example' "value"
- option 'example" "value'
- option example some value with space
4.UCI 命令讀寫配置
語法格式
- uci [<options>] <command> [<arguments>]
UCI 讀取總是先讀取內存中的緩存,然後再讀取文件中的
進行過增加,修改,刪除操作後要執行生效指令,否則所做修改只存留在緩存中
讀取類語法
取得節點類型
- uci get <config>.<section>
- uci get <config>.<section>.<option>
- uci show
- uci show <config>
- uci show <config>.<section>
- uci show <config>.<section>.<option>
- uci changes <config>
- uci show -X <config>.<section>.<option>
增加一個匿名節點到文件
- uci add <config> <section-type>
- uci set <config>.<section>=<section-type>
- uci set <config>.<section>.<option>=<value>
- uci add_list <config>.<section>.<option>=<value>
- uci set <config>.<section>=<section-type>
- uci set <config>.<section>.<option>=<value>
- uci delete <config>.<section>
- uci delete <config>.<section>.<option>
- uci delete <config>.<section>.<list>
- uci del_list <config>.<section>.<option>=<string>
- uci commit <config>