UCI模块,Unified Configuration Interface,通用配置接口,是openwrt的核心模块之一,是用于管理openwrt系统的配置文件,提供了API库函数和命令行接口供用户调用,这些配置文件默认保存在/etc/config/目录下,每一个文件即是一个uci配置文件.
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config zone
option name wan
list network 'wan'
list network 'wan6'
list network 'wwan'
list network '4g'
option input ACCEPT
option output ACCEPT
option forward REJECT
option masq 1
option mtu_fix 1
UCI配置文件通常由一个或多个config语句组成:
这里列出几个常用命令:
uci commit、uci get、uci set、uci add_list、uci del_list、uci show
以下为一个uci配置文件,文件名为test,放置路径为/etc/config/
uci get:获取uci配置
root@OpenWrt:/etc/config# uci get test.test1.name
jason
root@OpenWrt:/etc/config# uci get test.test1.skill
c java linux
root@OpenWrt:/etc/config# uci get test.test2.skill
none
uci set: 设置uci配置
root@OpenWrt:/etc/config# uci get test.test1.name
jason
root@OpenWrt:/etc/config# uci set test.test1.name='xxx'
root@OpenWrt:/etc/config# uci get test.test1.name
xxx
uci add_list: 添加uci的指定的列表的值
root@OpenWrt:/etc/config# uci get test.test1.skill
c java linux
root@OpenWrt:/etc/config# uci add_list test.test1.skill='html'
root@OpenWrt:/etc/config# uci get test.test1.skill
c java linux html
uci del_list: 删除uci的指定的列表的某一值
root@OpenWrt:/etc/config# uci get test.test1.skill
c java linux html
root@OpenWrt:/etc/config# uci del_list test.test1.skill='c'
root@OpenWrt:/etc/config# uci get test.test1.skill
java linux html
uci show: 显示uci文件的配置
若只输入uci show,则会显示指定目录下的所有uci配置文件的配置,默认为/etc/config/下的uci文件,会显示出很多,一般不会这样查询.
1、test为上面列出的uci文件名,uci show test会显示出test文件里的所有配置信息
root@OpenWrt:/etc/config# uci show test
test.test1=first
test.test1.age=‘1’
test.test1.skill=‘java’ ‘linux’ ‘html’
test.test1.name=‘xxx’
test.test2=second
test.test2.name=‘jack’
test.test2.age=‘0’
test.test2.skill=‘none’
2、test1为test文件里的一个section,该命令会显示该section下的所有配置信息
root@OpenWrt:/etc/config# uci show test.test1
test.test1=first
test.test1.age=‘1’
test.test1.skill=‘java’ ‘linux’ ‘html’
test.test1.name=‘xxx’
3、age为test文件里test1这个section里的一个option
root@OpenWrt:/etc/config# uci show test.test1.age
test.test1.age=‘1’
4、skill为test文件里test1这个section里的一个list
root@OpenWrt:/etc/config# uci show test.test1.skill
test.test1.skill=‘java’ ‘linux’ ‘html’
6、uci commit:提交uci配置的更改
在经过上面所有操作之后,uci show test为如下信息
root@OpenWrt:/etc/config# uci show test
test.test1=first
test.test1.age=‘1’
test.test1.skill=‘java’ ‘linux’ ‘html’
test.test1.name=‘xxx’
test.test2=second
test.test2.name=‘jack’
test.test2.age=‘0’
test.test2.skill=‘none’
但打开test文件,test文件内容如下
config first 'test1'
option name 'jason'
option age '1'
list skill 'c'
list skill 'java'
list skill 'linux'
config second 'test2'
option name 'jack'
option age '0'
list skill 'none'
经过上述的修改操作后,命令行显示出test文件的配置是修改后的配置,但test文件本身是没有被修改的若要让命令行的修改操作生效,则在修改完后需要执行uci commit命令,才会将修改的内容同步到test文件