UCI提供給shell和lua使用的配置接口

轉自:http://m.blog.csdn.net/article/details?id=47989493


1、uci提供給shell使用的配置藉口有兩套:

1)config_get用來讀取一個config值。命令格式如下:

config_getvar_name setction_name option_name <default>

var_name:    用來存放config值的變量。

settion_name:  就是section 的名字

option_name:  就是option的名字

 

config_get_bool的功能與config_get差不多,不過這個函數會把返回值轉換成整數值。

 

config_set用來配置config值,命令格式如下:

config_setsection_name option_name var_name

各個字段的含義同上。在使用config_get與config_set之前,要先調用函數config_load(config_file),這個函數會把config_file載入內存。

 

config_foreach是針對每一個section調用一個回調函數。命令格式如下:

config_foreachcallback_func section_type <customer_val>

section_type是每一個section的類型

callback_func就是回調函數,它有2個參數,第一個是section name,如果有定義customer_val,那麼第二個就是customer_val。我們可以在config_foreach裏調用config_get與config_set

 

config_cb()這個回調函數會在調用config_load時,對每一個section調用,這個函數有兩個參數,分別是section_type 與section_name。

 

option_cb()跟config_cb類似,不過是針對每一個option,這個函數也有兩個參數,分別是option_name 與option_value.


2)uciset network.wan.proto=pppoe修改後

uci show network.wan.proto來查看。

但是這個時候用cat /etc/config/network會看到proto的值沒有改,那是因爲uci set只是改變內存裏的值,

要寫到文件,可以使用命令uci commit。


2、UCI提供給Lua腳本使用的接口如下:

在Lua中也有一組接口用來存取UCIconfig的值,使用與shell中的函數大同小異。以下就簡單介紹:

X = uci.cursor() 首先要創建一個cursor X。有了這個cursor對象之後,我們就可以調用對象中的方法。

X:get(“config_file”,“section_name”, “option_name”),這個方法是用來獲取option的值。

 

X:set(“config_file”,“section_name”, “option_name”, val),這個方法用來把val的值賦值給option_name對應的option_value

 

X:foreach(“config_file”,“type”, function(s) ... End) 針對某一類型的section,調用回調函數,參數s是一個table,包含所有option的值,還包括兩個特殊的值:

s[‘.type’]-->section type

S[‘.name’]-->section name


其實這兩套接口再這兩種腳本語言中可以通用,相互調用。

現在一個問題,shell的那套接口用config_load接口加載了配置文件到內存中,用config_set等接口修改了,但是還沒找到一個接口可以將內存的的這些修改過的值寫到文件中。就像類似UCI commit和X:commit的作用。

詳細介紹可以看鏈接:http://wiki.openwrt.org/doc/techref/uci#api

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