UCI工具命令
UCI工具命令
https://blog.csdn.net/qq_41453285/article/details/102528227
一、UCI工具介绍
- 在开发调整配置时,可以直接使用vi编辑器修改UCI配置文件。但是UCI统一配置文件的目的就是所有 OpenWrt 配置可以通过统一接口读取和修改。对于开发人员而言,如 果使用 awk 和 grep 工具来解析将是非常低效的,UCI实用工具提供了修改和分析UCI文件的脚本编程开发接口
备注(重点)
- 当使用UCI工具写入配置文件时,配置文件都是整个重写并且不需要确认命令。这意味着在文件中任何多余的注释行和空行均会被删除
- 如果你有 UCI 类型的配置文件,想保存自己的注释和空行,那就不应该使用UCI命令行工具来编辑文件
二、命令格式与选项
- 命令格式:
uci [<options>] <command> [<arguments>]
- 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'
-
- command如下:
命 令 | 含 义 |
add | 增加指定配置文件的类型为 section-type 的匿名区段 |
add_list | 对已存在的 list 选项增加字符串 |
commit | 对给定的配置文件写入修改,如果没有指定参数则将所有的配置文件写入文件系统。所 有的“uci set”“uci add”“uci rename”和“uci delete”命令将配置写入一个临时位置, 在运行“uci commit”时写入实际的存储位置 |
export | 导出一个机器可读格式的配置。它是作为操作配置文件的 shell 脚本而在内部使用,导 出配置内容时会在前面加“package”和文件名 |
import | 以 UCI 语法导入配置文件 |
changes | 列出配置文件分阶段修改的内容,即未使用“uci commit”提交的修改。如果没有指定 配置文件,则指所有的配置文件的修改部分 |
show | 显示指定的选项、配置节或配置文件。以精简的方式输出,即 key=value 的方式输出 |
get | 获取指定区段选项的值 |
set | 设置指定配置节选项的值,或者是增加一个配置节,类型设置为指定的值 |
delete | 删除指定的配置节或选项 |
rename | 对指定的选项或配置节重命名为指定的名字 |
revert | 恢复指定的选项,配置节或配置文件 |
三、-P选项(/var/state文件)
- 有些运行中的状态值没有保存在/etc/config目录下,而是保存在/var/state下,这时可 以使用“-P”参数来查询当前状态值
四、演示案例(修改IP地址)
- 网络配置的相关信息存放在/etc/config/network文件中
- 下面我们修改“lan”这个网络接口的IP地址(修改完在下面图中可以看到“lan”这个网络接口的IP地址为我们设置的值)
-
uci set network.lan.ipaddr=192.168.0.50 uci commit network /etc/init.d/network restart
- 删除上面我们设置的IP地址
-
uci delete network.lan.ipaddr uci commit network /etc/init.d/network restart
五、演示案例(修改多个配置节类型或匿名配置节)
- 概念:当有多个配置节类型相同或者为匿名配置节时,UCI使用数组数字引用它们
- 规则如下:
- ①例如:OpenWrt 系统默认有 3 个网卡接口,可以通过network.@interface[0]来引用第一个,通过network.@ interface[1]来引用第二个,通过network.@interface[2]来引用第三个
- ②也可以使用负索引, 例如network.@interface[−1],其中“−1”指的是最后一个,“−2”指的是倒数第二个,以此类推
演示案例(获取各个网卡名称)
- 我这个OpenWrt系统中有两个网卡
uci get network.@interface[0].ifname //获取第一个 uci get network.@interface[1].ifname //获取第二个 uci get network.loopback.ifname //获取第一个 uci get network.lan.ifname //获取第二个 uci get network.@interface[-2].ifname //获取第一个 uci get network.@interface[-1].ifname //获取第二个
六、演示案例(更改链表配置)
- 当一个配置文件中的选项(option)为链表时,操作方法有所不同
演示案例
- 例如我们的/etc/config/system配置文件中就有“list”形式的链表选项
- 添加到链表中一个配置项:
uci add_list system.ntp.server='ntp.dongshao.net' uci commit system
- 删除链表中的一个配置项
uci del_list system.ntp.server='ntp.dongshao.net' uci commit system
- 删除链表中的所有配置项
uci delete system.ntp.server uci commit system
七、自定义配置文件及修改
下面我们创建一个helloRoute的配置
- 第一步:先创建一个“hello”的配置文件
touch /etc/config/hello
- 第二步:首先通过命令行创建配置文件。像上面的配置一样,如果你想增加一个配置节,大多数人都会想到使用“uci add”命令,但实际上“uci add”仅可以创建匿名配置节,不能完 成创建命名配置的目标,要使用“uci set”命令来完成
uci set hello.globe=system
- 第三步:设置配置节的3个选项
-
uci set hello.globe.agent=dongshao //用户代理属性 uci set hello.globe.url='https://blog.csdn.net/qq_41453285' //访问URL uci set hello.globe.delay=100 //启动延迟时间 uci commit //提交配置修改
- 查看配置文件内容
============ End
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2019-09-10 Centos6 r8192ce_pci
2018-09-10 TortoiseSVN的基本使用方法
2018-09-10 svn和git的区别及适用场景
2018-09-10 TortoiseSVN 和 VisualSVN Server 使用教程
2018-09-10 SVN中trunk、branches、tag的使用