【智能路由器】系列文章连接
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