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./doc/techref/uci#api |
|
来自: deckie > 《 sinat_29830917的博客》