Firefly开源社区

标题: [UCI] OpenWrt-uci命令系统 [打印本页]

作者: 代祥军    时间: 2015-4-5 14:04
标题: [UCI] OpenWrt-uci命令系统
本帖最后由 代祥军 于 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目录下。
  1. root@OpenWrt:/# ls /etc/config/
  2. 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文件语法举例
  1. config 'section-type' 'section'
  2.         option  'key'       'value'
  3.         list    'list_key'  'list_value'
  4. config 'example' 'test'
  5.         option  'string'        'some value'
  6.         option  'boolean'       '1'
  7.         list    'collection'    'first item'
  8.         list    'collection'    'second item'
复制代码

config 节点 以关键字 config 开始的一行用来代表当前节点
            section-type 节点类型
            section 节点名称
option 选项 表示节点中的一个元素
            key 键
            value 值
list 列表选项 表示列表形式的一组参数。
           list_key 列表键
           list_value 列表值

config 节点语法格式
  1. config 'section-type' 'section'
复制代码
config 节点(后文统一称为节点)原则
           UCI 允许只有节点类型的匿名节点存在
           节点类型和名字建议使用单引号包含以免引起歧义
           节点中可以包含多个 option 选项或 list 列表选项。
           节点遇到文件结束或遇到下一个节点代表完成。
option 选项语法格式
  1. option 'key' 'value'
复制代码
option 选项(后文统一称为选项)原则
           选项的键与值建议使用单引号包含
           避免相同的选项键存在于同一个节点,否则只有一个生效
list 列表选项语法格式
  1. list 'list_key' 'list_value'
复制代码
list 列表选项(后文统一称为列表)原则
      选项的键与值建议使用单引号包含
      列表键的名字如果相同,则相同键的值将会被当作数组传递给相应软件
UCI 的语法容错
  1. option example    value
  2. option 'example'   value
  3. option example    "value"
  4. option "example"  'value'
  5. option 'example'   "value"
复制代码
UCI 无法容忍的语法
  1. option 'example" "value'
  2. option example some value with space
复制代码
尽量使用常规字符去处理器 UCI,特殊字符有可能会破坏数据结构的完整性。

4.UCI 命令读写配置
语法格式
  1. uci [<options>] <command> [<arguments>]
复制代码
读写规则
       UCI 读取总是先读取内存中的缓存,然后再读取文件中的
       进行过增加,修改,删除操作后要执行生效指令,否则所做修改只存留在缓存中
读取类语法
取得节点类型
  1. uci get <config>.<section>
复制代码
取得一个值
  1. uci get <config>.<section>.<option>
复制代码
显示全部 UCI 配置
  1. uci show
复制代码
显示指定文件配置
  1. uci show <config>
复制代码
显示指定节点名字配置
  1. uci show <config>.<section>
复制代码
显示指定选项配置
  1. uci show <config>.<section>.<option>
复制代码
显示尚未生效的修改记录
  1. uci changes <config>
复制代码
匿名节点显示(如果所显示内容有匿名节点,使用-X 参数可以显示出匿名节点的 ID)
  1. uci show -X <config>.<section>.<option>
复制代码
写入类语法
增加一个匿名节点到文件
  1. uci add <config> <section-type>
复制代码
增加一个节点到文件中
  1. uci set <config>.<section>=<section-type>
复制代码
增加一个选项和值到节点中
  1. uci set <config>.<section>.<option>=<value>
复制代码
增加一个值到列表中
  1. uci add_list <config>.<section>.<option>=<value>
复制代码
修改一个节点的类型
  1. uci set <config>.<section>=<section-type>
复制代码
修改一个选项的值
  1. uci set <config>.<section>.<option>=<value>
复制代码
删除指定名字的节点
  1. uci delete <config>.<section>
复制代码
删除指定选项
  1. uci delete <config>.<section>.<option>
复制代码
删除列表
  1. uci delete <config>.<section>.<list>
复制代码
删除列表中一个值
  1. uci del_list <config>.<section>.<option>=<string>
复制代码
生效修改(任何写入类的语法,最终都要执行生效修改,否则所做修改只在缓存中,切记!)
  1. uci commit <config>
复制代码

5.综合实例



作者: pinyin    时间: 2015-4-5 14:13
不错
作者: hades    时间: 2015-4-5 15:21
顶一个。。。:lol
作者: hwei    时间: 2015-4-5 21:16
不错,看看。。。
作者: 工123456    时间: 2015-4-5 21:29
不错,看看。。。
作者: zgwdj    时间: 2015-4-5 21:55
不错,看看。。。:victory:
作者: wj8668    时间: 2015-4-7 16:54
谢谢分享 谢谢
作者: ihackdream    时间: 2015-4-10 14:36
学习学习
作者: longteng    时间: 2015-4-11 12:01
学习学习
作者: on79    时间: 2015-4-19 20:51
see...see....
作者: live-8    时间: 2015-4-24 21:08
支持!
作者: 石头猫    时间: 2015-4-29 09:25
任何写入类的语法,最终都要执行生效修改,否则所做修改只在缓存中,切记!
作者: gakaki    时间: 2015-5-1 03:59
这不就是官方翻译吗
作者: yinzy0706    时间: 2015-5-19 09:51
不错哦,看看
作者: axlrose    时间: 2015-5-21 13:47
命令行下使用uci也是必学的,支持
作者: loveme758    时间: 2015-5-22 22:30
look a look!
作者: llkak47    时间: 2015-6-2 10:21
来学习学习。
作者: wulin    时间: 2015-6-2 14:45
菜鸟学习!
作者: quanpower    时间: 2015-6-4 17:14
这个写的好,赞!
作者: juspit    时间: 2015-6-21 19:41
看看啊
作者: 1815    时间: 2015-6-30 11:48
新来的,学习!
作者: 候赛雷    时间: 2015-6-30 13:54
看看

作者: NetBarDJ    时间: 2015-7-6 16:41
看个文档这么麻烦:(
作者: hddgmon    时间: 2015-7-13 07:28
正需要这个!
作者: jewdore    时间: 2015-7-16 12:28
very good

作者: 2322205    时间: 2015-7-23 17:50
刚刚学习,很给力啊
作者: General0878    时间: 2015-7-25 13:51
感谢分享,长知识了
作者: wangchenxicool    时间: 2015-7-29 21:19
期待
作者: 2561862837    时间: 2015-8-4 17:08
得到的点点滴滴
作者: 1347584164@qq.c    时间: 2015-8-8 00:02
看看
作者: fireflydeid    时间: 2015-8-10 10:28
很好的内容,多谢!
作者: jaskle    时间: 2015-8-11 10:48
这么好的教程,一定要看看
作者: leoking0001    时间: 2015-8-13 11:24
感谢分享:)
作者: hujunyi5188    时间: 2015-8-17 14:59
不错 学习一下
作者: wb_wbin    时间: 2015-8-17 18:59
:D:)
作者: t77591jpjp    时间: 2015-8-20 10:22
感谢楼主分享~~~:lol
作者: wujialing3000    时间: 2015-8-22 17:14
有帮助,感觉比较粗矿
作者: bolice    时间: 2015-8-27 13:15
新人来学习,通过这个帖子加入了论坛
作者: millet    时间: 2015-8-28 07:04
好东西,难得一见!!
作者: xingzhi0606    时间: 2015-8-29 14:31
学习一下
作者: zhangjie201412    时间: 2015-9-2 17:36
看看到底是个啥
作者: lixm4469    时间: 2015-9-3 21:29
不错呵,学习。
作者: iceeye02    时间: 2015-9-5 09:27
Would like to download
作者: wufuhui    时间: 2015-9-6 14:53
想看下

作者: 17427952    时间: 2015-9-7 15:18
这么神秘,谁设计这样的系统,还得回复才能看到帖子。
作者: ryanloi    时间: 2015-9-10 19:46
see.............see.................
作者: hfthw    时间: 2015-9-14 17:57
不错 学习了  :victory:
作者: ysunicom    时间: 2015-9-15 17:14
这个一定要看
作者: silencerfox    时间: 2015-9-16 12:26
谢谢了!:)
作者: Abel_zhong    时间: 2015-9-16 15:41
很给力
作者: lucipher    时间: 2015-9-17 10:56
感谢,学习了
作者: astony    时间: 2015-9-19 11:58
很不错,看看下面的内容吧?
作者: sjjpro    时间: 2015-9-21 00:50
来学习
作者: zhb339    时间: 2015-9-23 09:49
很好很不错。。。。。。。。
作者: wy13145601    时间: 2015-9-23 10:55
受益匪浅
作者: wyqarm    时间: 2015-9-24 17:30
学习了
作者: kpkdz    时间: 2015-9-27 14:15
这个东西好呀,用得着,谢谢
作者: 银色盒子    时间: 2015-9-29 23:06
很好,谢谢分享
作者: alex_fire    时间: 2015-10-2 22:14
楼 主 给 力
作者: qsjit    时间: 2015-10-7 11:41
看看
作者: chinazwb    时间: 2015-10-9 14:57
很想下载
作者: gundamofgdcc    时间: 2015-10-12 11:50
可以看看嘛?
作者: smilecai    时间: 2015-10-12 11:57
good!
作者: 他爹思密达    时间: 2015-10-13 19:38
let me see see ,太珍贵了
作者: 有餘    时间: 2015-10-15 09:24
学习下LUA LUCI
作者: jackcht    时间: 2015-10-16 11:02
为啥要回复才能看?
作者: xiaohua_0504    时间: 2015-10-19 13:53
:)
作者: lspzj    时间: 2015-10-21 13:50
config/wirelessconfig/wireless
作者: wangdabao    时间: 2015-10-21 15:46
谢谢,学习了,正好找不到相关的内容,不过楼主好像没有说明怎样访问没有name只有type的section中的option,可用用packagname.@sectionname[0].optionname来访问匿名section中的option值。
作者: wangdabao    时间: 2015-10-21 15:47
wangdabao 发表于 2015-10-21 15:46
谢谢,学习了,正好找不到相关的内容,不过楼主好像没有说明怎样访问没有name只有type的section中的option ...

有道理,请看官方的文档http://wiki.openwrt.org/doc/uci
作者: liangtade    时间: 2015-10-21 17:03
看看是什么内容,哈哈
作者: EngrTao    时间: 2015-10-22 03:33
哈哈哈,这正是我需要的啊
作者: missedwinter    时间: 2015-10-22 13:13
tks
作者: panghong    时间: 2015-10-26 18:11
我要看看看看
作者: aokingch    时间: 2015-10-30 10:05
很不错
作者: rxf992    时间: 2015-10-30 17:54
多谢楼主分享,过来学习学习
作者: flute_sword    时间: 2015-10-31 09:57
谢谢分享
作者: tang5275    时间: 2015-11-1 08:39
看看阿城vvvvvvvvvvv  
作者: crazysummers    时间: 2015-11-2 16:42
hao
作者: hepengju130    时间: 2015-11-3 20:57
谢谢楼主无私的分享!
作者: waterflying14    时间: 2015-11-5 10:20
顶一个,谢谢分享
作者: swcims    时间: 2015-11-5 17:00
学习学习,谢谢!
作者: connycommy    时间: 2015-11-5 17:35
学习中
作者: nnaoqr    时间: 2015-11-7 12:20
超级详细,赞一个。
作者: xiaozuanfeng    时间: 2015-11-8 19:09
正需要,谢谢分享
作者: leaixian    时间: 2015-11-10 14:42
学习
作者: bianqinghong    时间: 2015-11-10 16:26
学嘻嘻阿斯蒂芬阿萨德发射点发
作者: jim111    时间: 2015-11-12 11:14
kkkkkd
作者: oskycar    时间: 2015-11-12 16:50
看看
作者: hpcat432    时间: 2015-11-13 08:42
求看~
作者: firstduck    时间: 2015-11-13 11:49
不错,看看。。。
作者: islog    时间: 2015-11-14 15:31
谢谢楼主分享
作者: gcx_499288957    时间: 2015-11-15 19:50
不错
作者: azxsazxs    时间: 2015-11-16 18:34
as sdf sdfgqarwegqadf
作者: hare1000    时间: 2015-11-17 14:25
要回复才能看的啊?
作者: guyuehuanyu    时间: 2015-11-18 13:54
很好!!!!
作者: blademaster98    时间: 2015-11-18 14:00
非常实用,感谢分享!
作者: elsummer    时间: 2015-11-20 10:15
kankan
作者: 943746447    时间: 2015-11-21 11:52
顶一个
作者: seloss    时间: 2015-11-22 06:25
看看 谢谢了




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1