OpenWrt UCI 学习笔记

部署运行你感兴趣的模型镜像

UCI (Unified Configuration Interface, 统一配置接口) 是OpenWrt的集中配置管理工具,关于UCI的具体介绍可以查看官方文档—The UCI System

可以通过ubuntu安装UCI或使用openwrt的板子来获得UCI测试环境

##UCI文件格式
UCI文件使用下例所示的固定格式:

package 'example'

config 'example' 'test'
        option   'string'      'some value'
        option   'boolean'     '1'
        list     'collection'  'first item'
        list     'collection'  'second item'
  • package 'example'中的’example’实际上就是UCI文件的文件名,例如/etc/config/network对应 package ‘network’,但是这个语句不会存在文件中,需要通过命令uci export network查看。
  • config 'example' 'test'语句定义了一个type为example,名字为test的section。section可以只有type而没有名字,这类section称为匿名的section,后文会有说明。
  • option 'string' 'some value'语句定义了section下的一个option,该option标识为string,值为some value。
  • list 'collection' 'first item'语句定义了section下的一个list,list与option不同之处在于list可以有多个值,该例子中的list collection有first item和second item两个值。

普通节点示例
[外链图片转存中…(img-AOfKrXZc-1701226929259)]

匿名节点示例
[外链图片转存中…(img-gVwXAmYk-1701226929261)]

##UCI命令

root@OpenWrt:/lib/config# 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>]]
	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'

请在/etc/config目录下创建一个文件network,内容如下

config interface 'lan'
        option ifname 'eth2'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option ip6addr 'fec0::1/64'

batch
批处理uci命令,命令不包含字符串"uci"

例如要批处理以下两个命令
uci set test.test1=test2
uci set test.test1.test3=test4

只需要把这两个命令去掉uci后放到文档a.txt里面
cat a.txt
set test.test1=test2
set test.test1.test3=test4

然后执行
uci batch < a.txt

commit
提交uci修改,当命令uci changes有返回结果时表示有uci修改待提交,可以通过命令uci commit完成提交,即写入到配置文件。
uci commit可以提交具体的package,例如uci commit network表示只提交network部分的修改。

export
导出配置文件为可读的格式

root@OpenWrt:/etc/config# uci export network
package network

config interface 'lan'
        option ifname 'eth2'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option ip6addr 'fec0::1/64'

import
导入配置文件为UCI格式

root@OpenWrt:/etc/config# uci import
>package test
>config test1 test2
>option test3 test4
>ctrl + D

执行上述命令后会得到文件’test’

root@OpenWrt:/etc/config# cat test

config test1 'test2'
        option test3 'test4'

changes
追踪修改但未提交的动作

add
添加一条匿名的section

root@OpenWrt:/etc/config# uci add network test
root@OpenWrt:/etc/config# uci export network
package network

config interface 'lan'
        option ifname 'eth2'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option ip6addr 'fec0::1/64'

config test

add_list
添加一条list

root@OpenWrt:/etc/config# uci add_list network.lan.ip2=1.2.3.4
root@OpenWrt:/etc/config# uci export network
package network

config interface 'lan'
        option ifname 'eth2'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option ip6addr 'fec0::1/64'
        list ip2 '1.2.3.4'

config test

del_list
删除一条list,由于list可以存在多个值,所以必须指定删除的值

root@OpenWrt:/etc/config# uci del_list network.lan.ip2=1.2.3.4
root@OpenWrt:/etc/config# uci export network
package network

config interface 'lan'
        option ifname 'eth2'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option ip6addr 'fec0::1/64'

config test

show
用压缩格式显示all, package, section或option的值,依参数而定

uci show 					--- show all
uci show network			--- show network
uci show network.lan		--- show network.lan
uci show network.lan.ipaddr	--- show network.lan.ipaddr
root@OpenWrt:/etc/config# uci show network
network.lan=interface
network.lan.ifname=eth2
network.lan.proto=static
network.lan.ipaddr=192.168.1.1
network.lan.netmask=255.255.255.0
network.lan.ip6addr=fec0::1/64
network.lan.ip2=
network.@test[0]=test

get
获取指定section或option的值,与uci show等号两边对应

root@OpenWrt:/etc/config# uci get network.lan
interface
root@OpenWrt:/etc/config# uci get network.lan.ifname
eth2

set
为指定section或option赋值(不存在则创建该对象),格式可以参考uci show的结果

root@OpenWrt:/etc/config# uci set network.lan.ipaddr=10.0.0.1
root@OpenWrt:/etc/config# uci show network
network.lan=interface
network.lan.ifname=eth2
network.lan.proto=static
network.lan.netmask=255.255.255.0
network.lan.ip6addr=fec0::1/64
network.lan.ip2=
network.lan.ipaddr=10.0.0.1
network.@test[0]=test

delete
删除指定section或option

root@OpenWrt:/etc/config# uci delete network.lan.ip2
root@OpenWrt:/etc/config# uci delete network.@test[0]
root@OpenWrt:/etc/config# uci show network
network.lan=interface
network.lan.ifname=eth2
network.lan.proto=static
network.lan.netmask=255.255.255.0
network.lan.ip6addr=fec0::1/64
network.lan.ipaddr=10.0.0.1

rename
重命名section或option

root@OpenWrt:/etc/config# uci rename network.lan.ipaddr=ip
root@OpenWrt:/tmp/etc/config# uci show network
network.lan=interface
network.lan.ifname=eth2
network.lan.proto=static
network.lan.netmask=255.255.255.0
network.lan.ip6addr=fec0::1/64
network.lan.ip=10.0.0.1

revert
撤销修改(执行uci commit之前)

reorder
暂时不懂有什么作用。。。

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

OpenWrt 系统中,**UCI(Unified Configuration Interface)** 是用于管理系统配置的核心组件。它提供了一种统一、简洁的方式来配置网络、无线、系统服务等各项参数。 --- ### 一、UCI 的基本概念 1. **作用**: - 统一管理配置文件。 - 提供命令行工具 `uci` 供用户操作配置。 - 配置更改后可立即生效或重启后生效。 2. **配置文件位置**: - 主配置文件存放在 `/etc/config/` 目录下。 - 常见配置文件包括: - `/etc/config/network`:网络配置 - `/etc/config/wireless`:无线配置 - `/etc/config/dhcp`:DHCP 服务配置 - `/etc/config/system`:系统设置 - `/etc/config/firewall`:防火墙规则 --- ### 二、UCI 命令详解 `uci` 是操作配置的核心命令,支持增删改查等操作。 #### 常用命令格式: ```bash uci [操作] [配置项路径] [值] ``` #### 操作类型: | 操作 | 说明 | |------------|------------------------------| | `get` | 获取配置项的值 | | `set` | 设置配置项的值 | | `add` | 添加一个新节(section) | | `delete` | 删除一个节或配置项 | | `commit` | 提交更改,使配置永久生效 | | `revert` | 撤销未提交的更改 | | `show` | 显示配置项内容 | #### 示例: ```bash # 查看无线配置 uci show wireless # 获取无线设备 radio0 的类型 uci get wireless.radio0.type # 设置无线设备 radio0 的通道为 6 uci set wireless.radio0.channel=6 # 添加一个新的无线网络配置 uci add wireless wifi-iface # 提交更改 uci commit wireless # 重启无线服务使配置生效 wifi reload ``` --- ### 三、UCI 配置结构说明 UCI 配置由 **配置文件 → 节(section)→ 选项(option)** 组成。 #### 示例:`/etc/config/network` ```bash config interface 'loopback' option ifname 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0' config interface 'lan' option ifname 'eth0' option proto 'dhcp' ``` - `config interface 'loopback'`:定义一个名为 `loopback` 的接口节。 - `option ifname 'lo'`:设置该节的选项。 --- ### 四、常用配置文件示例 #### 1. 网络配置(network) ```bash config interface 'lan' option proto 'static' option ipaddr '192.168.1.1' option netmask '255.255.255.0' option gateway '192.168.1.254' option dns '8.8.8.8' ``` #### 2. 无线配置(wireless) ```bash config wifi-device 'radio0' option type 'mac80211' option channel '6' option hwmode '11g' option path 'platform/ar934x/wmac' option htmode 'HT20' option disabled 0 config wifi-iface option device 'radio0' option network 'lan' option mode 'ap' option ssid 'OpenWrt' option encryption 'psk2' option key 'password123' ``` --- ### 五、注意事项 1. **修改后需提交**:`uci commit` 2. **服务需重启**:如网络、无线等服务需手动重启(如 `wifi reload`、`ifdown lan && ifup lan`) 3. **备份配置**:可使用 `uci export > config_backup.txt` 备份配置 4. **恢复配置**:使用 `uci import < config_backup.txt` ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值