|
[UCI] OpenWrt-uci命令系统
发表于 2015-4-5 14:04:46
浏览:800729
|
回复:623
打印
只看该作者
[复制链接]
楼主
本帖最后由 代祥军 于 2015-6-3 11:18 编辑
目录:
1.UCI命令
2.UCI的文件和流程
3.UCI 的文件语法
4.UCI 命令读写配置
5.综合实例
1.UCI命令
一个众所周知的原因,在Linux下各种软件包有各种不同的配置脚本,每个配置脚本的语法格式和操作方式不同,
这样的设计虽然可以体现出各软件包自身的优势,同时也增加了学习曲线。在这一点上OpenWrt的UCI无疑处理的更
胜一筹。UCI是集中式配置信息管理接口(Unified Configuration Interface)的缩写,他是OpenWrt引进的一套配置
参数管理系统。UCI管理了OpenWrt下最主要的系统配置参数并且提供了简单、容易、标准化的人机交互接口。UCI中
已经包含了网络配置、无线配置、系统信息配置等作为基本路由器所需的主要配置参数。同时UCI也可以帮助开发人
员快速的建立一套基于OpenWrt的智能路由产品控制界面。
2.UCI的文件和流程
UCI的配置文件全部存储在/etc/config目录下。
- root@OpenWrt:/# ls /etc/config/
- dhcp dropbear firewall network system wireless
复制代码 日前已有大量软件包支持UCI模式管理,但不是所有的软件包,支持的软件包是这样来完成
启动的(以samba举例):
1.启动脚本/etc/init.d/samba
2.启动脚本通过UCI分析库从/etc/config/samba获得启动参数
3.启动脚本完成正常启动
由于UCI的数据文件较为简单,并且具备了很nice的直接观感,所以配置文件既可以使用UCI
命令进行修改,也可以使用VI编辑器直接修改文件。但如果两种方式都是用时需要注意UCI命
令修改会产生缓存,每次修改好要尽快确认保存避免出现冲突。
最常见的几个UCI配置作用说明
文件 | 作用 | /etc/config/dhcp | 面向LAN口提供的IP地址分配服务配置 | /etc/config/dropbear | SSH服务配置 | /etc/config/firewall | 路由转发,端口转发,防火墙规则 | /etc/config/network | 自身网络接口配置 | /etc/config/system | 时间服务器时区配置 | /etc/config/wireless | 无线网络配置 |
3.UCI的文件语法
UCI文件语法举例
- config 'section-type' 'section'
- option 'key' 'value'
- list 'list_key' 'list_value'
- config 'example' 'test'
- option 'string' 'some value'
- option 'boolean' '1'
- list 'collection' 'first item'
- list 'collection' 'second item'
复制代码
config 节点 以关键字 config 开始的一行用来代表当前节点
section-type 节点类型
section 节点名称
option 选项 表示节点中的一个元素
key 键
value 值
list 列表选项 表示列表形式的一组参数。
list_key 列表键
list_value 列表值
config 节点语法格式
- config 'section-type' 'section'
复制代码 config 节点(后文统一称为节点)原则
UCI 允许只有节点类型的匿名节点存在
节点类型和名字建议使用单引号包含以免引起歧义
节点中可以包含多个 option 选项或 list 列表选项。
节点遇到文件结束或遇到下一个节点代表完成。
option 选项语法格式
option 选项(后文统一称为选项)原则
选项的键与值建议使用单引号包含
避免相同的选项键存在于同一个节点,否则只有一个生效
list 列表选项语法格式
- list 'list_key' 'list_value'
复制代码 list 列表选项(后文统一称为列表)原则
选项的键与值建议使用单引号包含
列表键的名字如果相同,则相同键的值将会被当作数组传递给相应软件
UCI 的语法容错
- option example value
- option 'example' value
- option example "value"
- option "example" 'value'
- option 'example' "value"
复制代码 UCI 无法容忍的语法
- option 'example" "value'
- option example some value with space
复制代码 尽量使用常规字符去处理器 UCI,特殊字符有可能会破坏数据结构的完整性。
4.UCI 命令读写配置
语法格式
- uci [<options>] <command> [<arguments>]
复制代码 读写规则
UCI 读取总是先读取内存中的缓存,然后再读取文件中的
进行过增加,修改,删除操作后要执行生效指令,否则所做修改只存留在缓存中
读取类语法
取得节点类型
- uci get <config>.<section>
复制代码 取得一个值
- uci get <config>.<section>.<option>
复制代码 显示全部 UCI 配置
显示指定文件配置
显示指定节点名字配置
- uci show <config>.<section>
复制代码 显示指定选项配置
- uci show <config>.<section>.<option>
复制代码 显示尚未生效的修改记录
匿名节点显示(如果所显示内容有匿名节点,使用-X 参数可以显示出匿名节点的 ID)
- uci show -X <config>.<section>.<option>
复制代码 写入类语法
增加一个匿名节点到文件
- uci add <config> <section-type>
复制代码 增加一个节点到文件中
- uci set <config>.<section>=<section-type>
复制代码 增加一个选项和值到节点中
- uci set <config>.<section>.<option>=<value>
复制代码 增加一个值到列表中
- uci add_list <config>.<section>.<option>=<value>
复制代码 修改一个节点的类型
- uci set <config>.<section>=<section-type>
复制代码 修改一个选项的值
- uci set <config>.<section>.<option>=<value>
复制代码 删除指定名字的节点
- uci delete <config>.<section>
复制代码 删除指定选项
- uci delete <config>.<section>.<option>
复制代码 删除列表
- uci delete <config>.<section>.<list>
复制代码 删除列表中一个值
- uci del_list <config>.<section>.<option>=<string>
复制代码 生效修改(任何写入类的语法,最终都要执行生效修改,否则所做修改只在缓存中,切记!)
5.综合实例
|
|