OpenWrt-uci命令系統

原文: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目錄下。

  1. root@OpenWrt:/# ls /etc/config/
  2. dhcp            dropbear    firewall    network      system        wireless
日前已有大量軟件包支持UCI模式管理,但不是所有的軟件包,支持的軟件包是這樣來完成
啓動的(以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文件語法舉例
  1. config 'section-type' 'section'
  2.         option  'key'       'value'
  3.         list    'list_key'  'list_value'
  4. config 'example' 'test'
  5.         option  'string'        'some value'
  6.         option  'boolean'       '1'
  7.         list    'collection'    'first item'
  8.         list    'collection'    'second item'

config 節點 以關鍵字 config 開始的一行用來代表當前節點
            section-type 節點類型
            section 節點名稱
option 選項 表示節點中的一個元素
            key 鍵
            value 值
list 列表選項 表示列表形式的一組參數。
           list_key 列表鍵
           list_value 列表值

config 節點語法格式
  1. config 'section-type' 'section'
config 節點(後文統一稱爲節點)原則
           UCI 允許只有節點類型的匿名節點存在
           節點類型和名字建議使用單引號包含以免引起歧義
           節點中可以包含多個 option 選項或 list 列表選項。
           節點遇到文件結束或遇到下一個節點代表完成。
option 選項語法格式
  1. option 'key' 'value'
option 選項(後文統一稱爲選項)原則
           選項的鍵與值建議使用單引號包含
           避免相同的選項鍵存在於同一個節點,否則只有一個生效
list 列表選項語法格式
  1. list 'list_key' 'list_value'
list 列表選項(後文統一稱爲列表)原則
      選項的鍵與值建議使用單引號包含
      列表鍵的名字如果相同,則相同鍵的值將會被當作數組傳遞給相應軟件
UCI 的語法容錯
  1. option example    value
  2. option 'example'   value
  3. option example    "value"
  4. option "example"  'value'
  5. option 'example'   "value"
UCI 無法容忍的語法
  1. option 'example" "value'
  2. option example some value with space
儘量使用常規字符去處理器 UCI,特殊字符有可能會破壞數據結構的完整性。

4.UCI 命令讀寫配置
語法格式
  1. uci [<options>] <command> [<arguments>]
讀寫規則
       UCI 讀取總是先讀取內存中的緩存,然後再讀取文件中的
       進行過增加,修改,刪除操作後要執行生效指令,否則所做修改只存留在緩存中
讀取類語法
取得節點類型
  1. uci get <config>.<section>
取得一個值
  1. uci get <config>.<section>.<option>
顯示全部 UCI 配置
  1. uci show
顯示指定文件配置
  1. uci show <config>
顯示指定節點名字配置
  1. uci show <config>.<section>
顯示指定選項配置
  1. uci show <config>.<section>.<option>
顯示尚未生效的修改記錄
  1. uci changes <config>
匿名節點顯示(如果所顯示內容有匿名節點,使用-X 參數可以顯示出匿名節點的 ID)
  1. uci show -X <config>.<section>.<option>
寫入類語法
增加一個匿名節點到文件
  1. uci add <config> <section-type>
增加一個節點到文件中
  1. uci set <config>.<section>=<section-type>
增加一個選項和值到節點中
  1. uci set <config>.<section>.<option>=<value>
增加一個值到列表中
  1. uci add_list <config>.<section>.<option>=<value>
修改一個節點的類型
  1. uci set <config>.<section>=<section-type>
修改一個選項的值
  1. uci set <config>.<section>.<option>=<value>
刪除指定名字的節點
  1. uci delete <config>.<section>
刪除指定選項
  1. uci delete <config>.<section>.<option>
刪除列表
  1. uci delete <config>.<section>.<list>
刪除列表中一個值
  1. uci del_list <config>.<section>.<option>=<string>
生效修改(任何寫入類的語法,最終都要執行生效修改,否則所做修改只在緩存中,切記!)
  1. uci commit <config>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章