天天看點

OpenWrt UIC 指令

OpenWrt UIC 指令

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      

日前已有大量軟體包支援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檔案文法舉例

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'      

config 節點(後文統一稱為節點)原則

           UCI 允許隻有節點類型的匿名節點存在

           節點類型和名字建議使用單引号包含以免引起歧義

           節點中可以包含多個 option 選項或 list 清單選項。

           節點遇到檔案結束或遇到下一個節點代表完成。

option 選項文法格式

option 'key' 'value'      

option 選項(後文統一稱為選項)原則

           選項的鍵與值建議使用單引号包含

           避免相同的選項鍵存在于同一個節點,否則隻有一個生效

list 清單選項文法格式

list 'list_key' 'list_value'      

list 清單選項(後文統一稱為清單)原則

      選項的鍵與值建議使用單引号包含

      清單鍵的名字如果相同,則相同鍵的值将會被當作數組傳遞給相應軟體

UCI 的文法容錯

option example value
option 'example' value
option example "value"
option "example" 'value'
option 'example' "value"      

UCI 無法容忍的文法

option 'example" "value'
option example some value with space      

盡量使用正常字元去處理器 UCI,特殊字元有可能會破壞資料結構的完整性。

4.UCI 指令讀寫配置

文法格式

uci [<options>] <command> [<arguments>]      

讀寫規則

       UCI 讀取總是先讀取記憶體中的緩存,然後再讀取檔案中的

       進行過增加,修改,删除操作後要執行生效指令,否則所做修改隻存留在緩存中

讀取類文法

取得節點類型

uci get <config>.<section>      

取得一個值

uci get <config>.<section>.<option>      

顯示全部 UCI 配置

uci show      

顯示指定檔案配置

uci show <config>      

顯示指定節點名字配置

uci show <config>.<section>      

顯示指定選項配置

uci show <config>.<section>.<option>      

顯示尚未生效的修改記錄

uci changes <config>      

匿名節點顯示(如果所顯示内容有匿名節點,使用-X 參數可以顯示出匿名節點的 ID)

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>      

總結:

1.作用:UCI是集中式配置資訊管理接口(Unified Configuration Interface),是OpenWrt引進的一套配置
參數管理系統。
  日前已有大量軟體包支援UCI模式管理,但不是所有的軟體包,支援的軟體包是這樣來完成
  啟動的(以samba舉例):
  1.啟動腳本/etc/init.d/samba
  2.啟動腳本通過UCI分析庫從/etc/config/samba獲得啟動參數
  3.啟動腳本完成正常啟動      
2.檔案文法:
  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 清單值      
3.指令操作:uci [<options>] <command> [<arguments>]
  config:檔案名   section:節點名   option:選項名
  --讀
    擷取節點類型:uci get <config>.<section>
    擷取節點選項的值:uci get <config>.<section>.<option>
    顯示全部uci配置:uci show
    顯示指定檔案配置:uci show <config>
    顯示指定節點名字配置:uci show <config>.<section>
    顯示指定選項配置:uci show <config>.<section>.<option>
    顯示未生效的修改記錄:uci changes <config>
    匿名節點顯示:uci show -X <config>.<section>.<option>(如果所顯示内容有匿名節點,使用-X 參數可以顯示出匿名節點的 ID)
  --寫
    增加一個匿名節點到檔案: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>(任何寫入類的文法,最終都要執行生效修改,否則所做修改隻在緩存中,切記!)      

============= End

下一篇: UCI工具指令

繼續閱讀