【智能路由器】openwrt工具uci使用指南

【智能路由器】系列文章连接
http://blog.csdn.net/u012819339/article/category/5803489


uci(Unified Configuration Interface 统一配置界面)。它的存在就是要让openwrt系统配置集中化。


命令行格式:

root@OpenWrt:/# uci
Usage: uci [<options>] <command> [<arguments>]

Commands:
        batch
        export     [<config>]
        import     [<config>]
        changes    [<config>]
        commit     [<config>]
        add        <config> <section-type>
        add_list   <config>.<section>.<option>=<string>
        del_list   <config>.<section>.<option>=<string>
        show       [<config>[.<section>[.<option>]]]
        get        <config>.<section>[.<option>]
        set        <config>.<section>[.<option>]=<value>
        delete     <config>[.<section>[[.<option>][=<id>]]]
        rename     <config>.<section>[.<option>]=<name>
        revert     <config>[.<section>[.<option>]]
        reorder    <config>.<section>=<position>

Options:
        -c <path>  set the search path for config files (default: /etc/config)
        -d <str>   set the delimiter for list values in uci show
        -f <file>  use <file> as input instead of stdin
        -m         when importing, merge data into an existing package
        -n         name unnamed sections on export (default)
        -N         don't name unnamed sections
        -p <path>  add a search path for config change files
        -P <path>  add a search path for config change files and use as default
        -q         quiet mode (don't print error messages)
        -s         force strict mode (stop on parser errors, default)
        -S         disable strict mode
        -X         do not use extended syntax on 'show'

root@OpenWrt:/# 

以上打印信息基本给出了uci命令的格式。但是uci到底怎么使用才能对应用进行配置呢?

由uci管理的配置文件都在/etc/config目录下,uci命令行操作也就是更改这个目录下的文件。

配置文件格式:
下面是一个简单的示例配置文件

config 'example' 'test'
        option   'string'      'some value'
        option   'boolean'     '1'
        list     'collection'  'first item'
        list     'collection'  'second item'

config ‘example’ ‘test’ 语句标志着一个节的开始。这里的配置类型是example,配置名是test。配置中也允许出现匿名节,即自定义了配置类型,而没有配置名的节。配置类型对应配置处理程序来说是十分重要的,因为配置程序需要根据这些信息来处理这些配置项。

option ‘string’ ‘some value’ 和 option ‘boolean’ ‘1’ 定义了一些简单值。文本选项和布尔选项在语法上并没有差异。布尔选项中可以用’0’ , ‘no’, ‘off’, 或者’false’来表示false值,或者也可以用’1’, ‘yes’,’on’或者’true’来表示真值。

以list关键字开头的多个行,可用于定义包含多个值的选项。所有共享一个名称的list语句,会组装形成一个值列表,列表中每个值出现的顺序,和它在配置文件中的顺序相同。如上例种中,列表的名称是’collection’,它包含了两个值,即’first item’和’second item’

‘option’和’list’语句的缩进可以增加配置文件的可读性,但是在语法不是必须的。

另外,配置文件中的引号最好统一用单引号,混合用则容易出错。

还有一点是必须知道的,即UCI标识符和配置文件名称所包含的字符必须是由a-z, 0-9和_组成。 选项值则可以包含任意字符,只要这个值是加了引号的。

示例:
下面由arvik带领大家使用uci写一个配置文件。这里就截取uhttpd的配置文件的一部分然后用uci命令重新写一份,最终内容如下:

config uhttpd 'main'
        list listen_http '0.0.0.0:80'
        list listen_http '[::]:80'
        option home '/www'
        option rfc1918_filter '1'
        option ubus_prefix '/ubus'

现在开始,首先建立配置文件arvik_testconfig

root@OpenWrt:/# touch arvik_testconfig

添加uhttpd节点,名字main

//建立有名节点
root@OpenWrt:/# uci set arvik_testconfig.main=uhttpd
//查看
root@OpenWrt:/# uci show arvik_testconfig
arvik_testconfig.main=uhttpd
//将缓存中的内容提交到配置文件中
root@OpenWrt:/# uci commit arvik_testconfig
//查看
root@OpenWrt:/# cat /etc/config/arvik_testconfig 

config uhttpd 'main'

建立list选项:

uci add_list arvik_testconfig.main.listen_http=0.0.0.0:80
uci add_list arvik_testconfig.main.listen_http=[::]:80

建立option选项并提交:

root@OpenWrt:/# uci set arvik_testconfig.main.home=/www
root@OpenWrt:/# uci set arvik_testconfig.main.rfc1918_filter=1
root@OpenWrt:/# uci set arvik_testconfig.main.ubus_prefix=/ubus
root@OpenWrt:/# uci commit arvik_testconfig
root@OpenWrt:/# 
root@OpenWrt:/# cat /etc/config/arvik_testconfig 

config uhttpd 'main'
        list listen_http '0.0.0.0:80'
        list listen_http '[::]:80'
        option home '/www'
        option rfc1918_filter '1'
        option ubus_prefix '/ubus'

root@OpenWrt:/# 

OK,用uci配置的一个文件就完成了

uci查看配置文件就简单了

root@OpenWrt:/# uci show arvik_testconfig.main
arvik_testconfig.main=uhttpd
arvik_testconfig.main.listen_http=0.0.0.0:80 [::]:80
arvik_testconfig.main.home=/www
arvik_testconfig.main.rfc1918_filter=1
arvik_testconfig.main.ubus_prefix=/ubus

如果查看一个无名节点,则需加“@”以及无名节点索引号,例如:

root@OpenWrt:/# uci show wireless.@wifi-device[0]
wireless.mt7612e=wifi-device
wireless.mt7612e.type=mt7612e
wireless.mt7612e.vendor=ralink
wireless.mt7612e.band=5G
wireless.mt7612e.channel=0
wireless.mt7612e.autoch=2

相应配置文件内容如下:

config wifi-device      mt7612e
        option type     mt7612e
        option vendor   ralink
        option band     5G
        option channel  0
        option autoch   2

config wifi-iface
        option device   mt7612e
        option ifname   rai0
        option network  lan
        option mode     ap
        option ssid     mt7612e-2077  
        option encryption psk2
        option key      12345678

config wifi-device      mt7620
        option type     mt7620
        option vendor   ralink
        option band     2.4G
        option channel  0
        option auotch   2

config wifi-iface
        option device   mt7620
        option ifname   ra0
        option network  lan
        option mode     ap
        option ssid     mt7620-2077  
        option encryption psk2
        option key      12345678

本篇到此结束。


【智能路由器】系列文章连接
http://blog.csdn.net/u012819339/article/category/5803489

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