Firefly开源社区

打印 上一主题 下一主题

Luci之uci API函数

98

积分

9

威望

6

贡献

注册会员

Rank: 8Rank: 8

积分
98

Luci之uci API函数

发表于 2015-3-25 09:48:30      浏览:6557 | 回复:0        打印      只看该作者   [复制链接] 楼主
1.参考:http://wiki.openwrt.org/doc/techref/uci#api
2.增删查改函数.
定义local x = luci.model.uci.cursor()
个人理解这个函数是提供uci的API的句柄
以下是对配置文件的增删查改
2.1增.
x:set("config","name","type") --增加一个section
x:set("config","sectionname","option","exp") --在section下增加配置
参数说明
config --- 配置文件的名字,配置文件位于/etc/config/下
name --- 配置文件中某个类型的具体名字
type --- 配置文件中类型(type)
option -- 具体配置
exp ---配置文件中具体参数类型的值

例:
#-----------------------------------------------------
x:set("wificonfig","0","wifi")
config wifi '0'
#-----------------------------------------------------
x:set("wificonfig","0","ip","192.168.0.1")
option ip '192.168.0.1'
#----------------------------------------------------
#以上两个函数联合起来如下:
#-----------------------------------------------------
config wifi '0'
     option ip '192.168.0.1'

2.2 删
x:delete("config","section") --删除section
x:delete("config,"section","option") -- 在section下删除option
删除某个section
2.1中的config wifi '0'直接可以用此函数删除
x:delete("wificonfig","wifi")

2.3查
x:foreach("config","type","function(s) ... end") -- 遍历整个config文件
x:get("config","sectionname","option") ---获得option的值
在foreach中有个两个变量
s[".type"] -->section type
s[".name"] -->section name
其中s[".name"] 就是x:get的第二个参数
例:有如下一个配置文件
config globals '0'
     option hostname 'iphone'
     option ip '192.168.0.1'
     option mac '00:11:22:33:44:55:66'
config globals '1'
     option hostname 'iphone1'
     option ip '192.168.0.2'
     option mac '00:11:22:33:44:55:77'
遍历并且打印每一个option
x:foreach("wificonfig","globals",function(s)
     local lcName = s[".name"]
     local lcHostname = x:get("wificonfig",lcName,"hostname")
     local lcIp = x:get("wificonfig",lcName,"ip")
     local lcMac = x:get("wificonfig",lcName,"mac")
     print("hostname = " .. lcHostname .. ",ip = " .. lcIp .. ",mac= " .. lcMac)
end
)
2.4修改
直接用2.1中的函数即可
3.commit函数
当修改后的配置文件,必须调用x:commit函数才能生效。
4.位置插入函数
x:reorder("config","sectionname",position)
将某个section放到postion位置(配置的section是从0开始计数)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表