当前位置: 首页 > news >正文

openwrt之UCI 增删改查(add/get/set /add_list...)

1,引入

        UCI是openwrt的统一配置接口,所有的配置文件被存放在/etc/config/下,使用UCI工具操作具体可查询官网中的开发文章:

[OpenWrt Wiki] The UCI systemhttps://openwrt.org/docs/guide-user/base-system/uciconifg  <section_type> <name>

        option xxxx xxxx

        list xxx xxxx

 本文是在此基础上,介绍一下UCI配置文件的相关命令是如何操作的。使用到UCI命令行工具:

# uci
Usage: uci [<options>] <command> [<arguments>]Commands:batchexport     [<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>]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'

2,UCI 命令行工具的使用

 ① 增加一个配置文件,向其中增加一个config配置项:home0

touch /etc/config/test   :增加一个配置文件testuci add test home0  :向test配置文件中增加home0 [匿名]sectionuci add test home1  :向test配置文件中增加home1 [匿名]sectionuci export test  :导出配置信息

 图1:

 

 使用add增加的config的name字段是匿名的,我们看到的cfgxxxx是uci自动分配的

② 向test文件中home0和home1增加多个option和list  (set、add_list)

uci add test home0  :再次向test中增加一个home0//增加第一个home0的选项
uci set test.@home0[0].name='Alice'
uci set test.@home0[0].age=12
uci set test.@home0[0].long=168
uci add_list test.@home0[0].good=1
uci add_list test.@home0[0].good=2
uci add_list test.@home0[0].good3=3//增加第二个home0的选项
uci set test.@home0[1].name='Jack'
uci set test.@home0[1].age=13
uci set test.@home0[1].long=178
uci add_list test.@home0[1].day=1
uci add_list test.@home0[1].day=2
//uci set test.@home0[1].day=3
uci add_list test.@home0[1].day=3//增加第一个home1的选项
uci set test.@home1[0].name='zhang'
uci set test.@home1[0].age=15
uci set test.@home1[0].long=198//修改其中的option的值
uci set test.@home0[0].long=999

 图2:

注:

        可以把每一个config数组,从上到下可以看成[第一个home0,最后一个home0],其次[home1 ...],UCI命令允许我们通过@home0[0]这样的方式操作第0个数组,其次也可以使用负数,如将上面的@home0[-1]:表示操作的最后一个home0

③ 删除其中的部分option和list

//删除所有config节点中的option: age
uci delete test.@home0[0].age
uci delete test.@home0[-1].age
uci delete test.@home1[0].age
//删除其中某一个list
uci del_list test.@home0[0].good=2
uci del_list test.@home0[-1].day=3

图3:

 如上,我们删除了所有的age,同时删除了good=2,day=3选项

④ 使用get选项读取option值

uci get test.@home0[0].name
uci get test.@home1[0].name
uci get test.@home0[0].good3
uci get test.@home1[0].day //最后一个报错了,因为没有这个选项
uci get test.@home0[1].day  

图4:

补充:

⑤ 可显示文件内容的命令

uci export test  : 显示配置文件内容
uci show test  :以get的方式显示

图5:

⑤ 使用uci commit 导出配置

uci commitcat /etc/config/test :文件中有刚刚修改的内容

其他命令选项:

uci changes :查看当前已改变的配置uci reorder test.@home0[1]=0  :将最后一个home0移动到第一个位置uci rename test.@home0[0]='my0' : 为第一个config:home0 创建名字my0
uci rename test.@home0[1].long=longs : 为第二个config:long改名字longsuci revert test.@home0[0] : 回退对第一个home0配置的修改uci revert  test : 回退所有的修改 (需要再commit之前运行)

3,总结

        本文介绍了UCI命令的一些用法,可以使用UCI命令生成一个简单的配置文件。

相关文章:

  • 防浪涌光电隔离型RS-485集线器可蓝牙通信
  • kafka records deletion policy
  • 赋能金融科技创新,Telerik打造高效、安全的金融应用解决方案!
  • Electron 打包与发布指南:让你的应用运行在 Windows、macOS、Linux
  • 【Java 专题补充】流程控制语句
  • 蓝桥杯第十六届c组c++题目及个人理解
  • 每周靶点分享:Angptl3、IgE、ADAM9及文献分享:抗体的多样性和特异性以及结构的新见解
  • 基于大型语言模型的高效时间序列预测模型选择
  • 【网工第6版】第7章 网络操作系统与应用服务器③
  • Arm核的Ubuntu系统上安装Wireshark
  • 英语六级---2024.12 卷二 仔细阅读2
  • 第5章 深度学习和卷积神经网络
  • 如何将 Build at、Hash 和 Time git 的 Tag 号等构建信息,自动写入一个 JSON 文件
  • P4017 最大食物链计数
  • 可观测性方案怎么选?SelectDB vs Elasticsearch vs ClickHouse
  • 计算机网络-DNS协议, ICMP协议,DDoS攻击
  • Minor GC与Full GC分别在什么时候发生?
  • DeepSeek驱动的智能客服革命:语音交互与大模型的融合实践
  • keep the pipe Just full But no fuller - BBR 与尘封 40 年的求索
  • 复刻低成本机械臂 SO-ARM100 单关节控制(附代码)
  • 俄罗斯今日将举行“胜利日”阅兵,有何看点?
  • 东莞“超级”音乐节五一出圈背后:文旅热力何以澎湃经济脉动
  • 对话|蓬皮杜策展人布莱昂:抽象风景中的中国审美
  • AMD:预计美国芯片出口管制将对全年营收造成15亿美元损失
  • 最新研究:基因编辑治疗晚期胃肠道癌显成效
  • 央行将增加3000亿元科技创新和技术改造再贷款额度