11.OpenWrt-uci命令接口

11.OpenWrt-uci命令接口

UCI模块,Unified Configuration Interface,通用配置接口,是openwrt的核心模块之一,是用于管理openwrt系统的配置文件,提供了API库函数和命令行接口供用户调用,这些配置文件默认保存在/etc/config/目录下,每一个文件即是一个uci配置文件.

11.1 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语句组成:

  1. config后面的interface是一个config的type,由自己定义,可以重复出现
  2. type后面是section,需要单引号括起,也由自己定义,在同一个文件中不可以重复出现搜索该section下的配置时需要用到这个section名
  3. option一般放具体配置名,value是该配置对应的值,一般由单引号括起
  4. list是一个列表名,可以包含多个值

11.2 uci命令使用

这里列出几个常用命令:
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文件

你可能感兴趣的:(linux,OpenWrt,路由器)