openwrt--uci指令的使用

2023-10-27

UCI简介

UCI是集中式配置信息管理接口(Unified Configuration Interface)的缩写,他是OpenWrt引进的一套配置参数管理系统。UCI管理了OpenWrt下最主要的系统配置参数并且提供了简单、容易、标准化的人机交互接口。UCI中已经包含了网络配置、无线配置、系统信息配置等作为基本路由器所需的主要配置参数。同时UCI也可以帮助开发人员快速的建立一套基于OpenWrt的智能路由产品控制界面。

文件语法

语法格式

    config <type> ["<name>"]        # 配置节(Section)
        option <name> "value"       # 选项对(option)
        list <name> "value"         # 选项对(option)

语法解析

UCI的配置文件由配置节组成,配置节由多个选项对组成。

  • 配置节:配置节是UCI配置的一个独立配置单元,UCI配置文件是由一个或多个配置节组成。配置节有一个配置类型属性“type”,是以“config”开头,并且有一个可选名称,如果配置节不带名称标识,这样的配置节称为匿名配置节。
  • 选项对:每一个选项对都有名称“name”和值“value”,写在其所属的配置节中。选项对一般以“option”与“list”开始。

注意事项

  1. 配置节的类型(type)和选项对(option)的含义均由应用程序来决定。
  2. 类型一般用于应用程序决定如何处理配置节包含的配置选项对。
  3. 如果缺少了一个必需的选项对,那应用程序通常会触发一个异常或者记录一个异常的日志,然后程序退出。
  4. 通常选项对在配置文件中都是使用空格或制表符缩进来标识,但这个并非是语法要求,仅仅是为了增加配置文件的可读性。
  5. option和list用来提高配置文件的可读性,并且在语法上也要求使用关键字来表示选项对的开始。
  6. 通常不需要使用引号引上类型标识符的值,引号只在封闭的值包含空格或制表符的情况下需要。可以合法地使用双引号或单引号。
  7. UCI标识符和配置文件的名称只能包含字母a~z、0~9和_。例如连字符(-)是不允许的。
  8. 选项对的值需要包含任何字符,但需要正确加上引号。

语法实例

我们可以看一下实际的配置文件的内容。

    root@OpenWrt:/# cat etc/config/system 
    config system
            option hostname 'OpenWrt'
            option ttylogin '0'
            option log_size '64'
            option urandom_seed '0'
            option zonename 'UTC'
            option log_proto 'udp'
            option conloglevel '8'
            option cronloglevel '5'

    config timeserver 'ntp'
            list server '0.openwrt.pool.ntp.org'
            list server '1.openwrt.pool.ntp.org'
            list server '2.openwrt.pool.ntp.org'
            list server '3.openwrt.pool.ntp.org'

统一配置原则

Openwrt有很多独立的第三方应用程序,大多数应用程序的软件包维护者已经制作了UCI兼容的配置文件,启动时由UCI配置文件转换为软件包的原始配置文件。这是在运行初始化脚本/etc/init.d/中执行的。

Openwrt系统的核心配置分成很多个文件,并且都位于 **/etc/config/**目录下。每个文件涉及系统配置的某一部分。你可以用一个文件编辑器修改,或者用命令行实用程序UCI编辑配置文件。UCI的配置文件也可通过各种编程API来修改。

    ls /etc/config/
    attendedsysupgrade  mosquitto           ucitest         dhcp                network             ucitrack
    dropbear            openssl             uhttpd          firewall            rpcd                wireless
    luci                system

无论是通过一个文本编辑器还是命令行工具修改配置文件,在改变一个UCI的配置文件后,受影响的服务或者可执行程序必须由init.d进行重启。这样更新的UCI配置才会真正生效。

常用功能配置文件含义

基本配置

路径 含义
/etc/config/dhcp dnsmasq和DHCP的配置
/etc/config/dropbear SSH服务端选项
/etc/config/firewall 中央防火墙配置
/etc/config/network 交换,接口和路由配置
/etc/config/system 杂项与系统配置
/etc/config/timeserver rdate的时间服务器列表
/etc/config/wireless 无线设置和无线网络的定义

IPv6

路径 含义
/etc/config/ahcpd Ad-Hoc配置协议(AHCP) 服务端配置以及转发器配置
/etc/config/aiccu AICCU 客户端配置
/etc/config/dhcp6c WIDE-DHCPv6 客户端配置
/etc/config/dhcp6s WIDE-DHCPv6 服务端配置
/etc/config/gw6c GW6c 客户端配置
/etc/config/radvd 路由通告 (radvd) 配置

其他

路径 含义
/etc/config/etherwake 以太网唤醒: etherwake
/etc/config/fstab 挂载点及swap
/etc/config/hd-idle 另一个可选的硬盘空闲休眠进程(需要路由器支持usb硬盘)
/etc/config/httpd 网页服务器配置选项(Busybox 自带httpd, 已被舍弃)
/etc/config/luci 基础 LuCI 配置
/etc/config/luci_statistics 包统计配置
/etc/config/mini_snmpd mini_snmpd 配置
/etc/config/mountd OpenWrt 自动挂载进程(类似autofs)
/etc/config/multiwan 简单多WAN出口配置
/etc/config/ntpclient ntp客户端配置,用以获取正确时间
/etc/config/pure-ftpd Pure-FTPd 服务端配置
/etc/config/qos QoS配置(流量限制与整形)
/etc/config/samba samba配置(Microsoft文件共享)
/etc/config/snmpd SNMPd(snmp服务进程) 配置
/etc/config/sshtunnel sshtunnel配置
/etc/config/stund STUN 服务端配置
/etc/config/transmission BitTorrent配置
/etc/config/uhttpd Web服务器配置(uHTTPd)
/etc/config/upnpd miniupnpd UPnP服务器配置
/etc/config/ushare uShare UPnP 服务器配置
/etc/config/vblade vblade 用户空间AOE(ATA over Ethernet)配置
/etc/config/vnstat vnstat 下载器配置
/etc/config/wifitoogle 使用按钮来开关WiFi的脚本
/etc/config/wol Wake-on-Lan: wol
/etc/config/znc ZNC 配置

配置服务示例

首先使用UCI命令行工具修改network服务

    root@OpenWrt:/# uci set network.lan.ipaddr='192.168.1.1'
    root@OpenWrt:/# uci commit network

修改完以后还没有生效,必须要重启network服务才能生效修改

    root@OpenWrt:/# /etc/init.d/network restart

UCI工具

下面是UCI工具选项对含义和基本使用方法,以及一些如何使用这个命令行接口工具的示例。

    root@OpenWrt:/# 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>][=<id>]]]
            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
            -t <path>  set save path for config change files
            -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'

UCI命令含义

命令 含义
export 导出一个机器可读的配置。它是作为操作配置的shell脚本而在内部使用,导出配置内容时会在前面加“package”和文件名
import 以UCI语法导入配置文件
show 显示指定的选项、配置节或配置文件。以key=value的方式输出
get 这个指令跟show有点像,但是是用来打印指定的配置配置节类型或者指定的选项对的值。
set 设置指定配置节选项对的值,或者说增加一个配置节,类型设置为指定的值
changes 列出配置文件分阶段修改内容,即未使用“uci commit”提交的修改。如果没有指定配置文件,则指所有的配置文件的修改部分
commit 对已给定的配置文件写入修改,如果没有指定参数则将所有的配置文件写入文件系统。所有的“uci set”“uci add”“uci rename”和“uci delete”命令将配置写入一个临时位置,在运行“uci commit”以后写入到实际的存储位置
add 增加指定配置文件的类型为 section-type 的匿名区段
add_list 对已存在的list选项增加字符串
del_list 对已存在的list选项删除指定字符串
delete 删除指定的配置节或选项
rename 对指定的选项或配置节重命名为指定的名字
revert 恢复指定的选项,配置节或配置文件

UCI命令实例

  1. 新增一个匿名配置节
    uci add test type
    uci add /etc/config/test type
  1. 新增一个选项对
    uci set test.@type[0].Enable=1
    uci set /etc/config/test.@type[0].Enable=1
  1. 新增一个选项对列表
    uci add_list test.@type[0].list="01 url"
    uci add_list /etc/config/test.@type[0].list="01 url"
  1. 显示已经修改的配置
    uci changes
  1. 提交已经修改的配置
    uci commit
  1. 显示现有配置、配置节或选项对
    uci show test
    uci show test.@type[0]
    uci show test.@type[0].Enable
  1. 显示现有配置节的类型与指定选项对的值
    uci get test.@type[0]
    uci get test.@type[0].Enable
  1. 删除指定配置节或选项对
    uci delete test.@type[0]
    uci delete test.@type[-1].Enable
  1. 删除指定选项对列表其中一个值
    uci del_list test.@type[0].list="01 url"
  1. 修改指定配置节或选项对的名称
    uci rename test.@type[0]="newsection"
    uci rename test.@type[0].list="url"
  1. 修改指定配置节的类型
    uci set test.@type[0]="newtype"
  1. 恢复未提交的配置文件、配置节或选项对
    uci revert test
    uci revert test.@type[0]
    uci revert test.@type[0].Enable
  1. 导出配置文件
    uci export test >> test
  1. 导入配置文件
    root@OpenWrt:~# uci import test
    config system 
            option hostname 'OpenWrt'
            option ttylogin '0'      
            option log_size '64'     
            option urandom_seed '0'
            option zonename 'UTC'  
            option log_proto 'udp' 
            option conloglevel '8'
            option cronloglevel '5'
                                
    config timeserver 'ntp'        
            list server '0.openwrt.pool.ntp.org'
            list server '1.openwrt.pool.ntp.org'
            list server '2.openwrt.pool.ntp.org'

    # 此指令需要自己输入配置文件,输入完以后按“Ctrl+D”组合键结束
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

openwrt--uci指令的使用 的相关文章

随机推荐

  • 解决pandas左上角的数据索引、替换

    对于一个dataframe 左上角可以通过如下方式索引到 dataframe columns name 示例代码 import pandas as pd import numpy as np df pd DataFrame np rando
  • Unbuntu20.04(linux)离线安装seata

    一 解压 首先下载seata的安装包 cd usr local目录下执行以下命令 tar zxvf seata server 1 4 0 tar gz 二 修改配置文件 1 修改配置文件registry conf 修改自己的nacos信息
  • CSS更改默认滚动条的样式

    简介 默认滚动条样式又宽又粗 不太美观 一般在网页布局时会将滚动条优化 加一些圆角 改颜色 改宽高等等 此时就需要更改默认滚动条的样式 使用 将下面CSS代码放在全局CSS文件 全局滚动条的样式都会改为自定义设置的样式 只想修改局部某个页面
  • Python异常重试解决方案 Python中异常重试的解决方案详解

    想了解Python中异常重试的解决方案详解的相关内容吗 标点符在本文为您仔细讲解Python异常重试解决方案的相关知识和一些Code实例 欢迎阅读和指正 我们先划重点 python 重试 python 重试机制 python 出错重试 下面
  • ctf-web入门-文件上传

    Web 151 考点 后端无验证 前端校验 查看源码可以发现只能上传png图片 修改为php 写一个php文件上传一句话木马 可以发现已经成功上传 查看上级目录发现可疑文件 查看flag php文件内容得出flag 得到flag Web 1
  • 【python】leetcode中常用函数(持续更新)

    文章目录 1 1 Counter 计数器 1 2 enumerate 索引数组 1 3 defaultdict 缺省字典 1 4 deque 队列 1 5 heapq 堆 1 6 reduce 1 7 map 2 1 数组操作 2 3 字符
  • MATLAB深度学习之LSTM

    MATLAB深度学习之LSTM 深度学习工具箱 net trainNetwork sequences Y layers options clc clear 训练深度学习 LSTM 网络 进行序列到标签的分类 XTrain 是一个包含 270
  • Virtuoso工具基础讲解

    画图基础工具分为 Ic51 启动命令 icfb 渐淘汱 Ic61 启动命令 virtuoso 目前主流 建立电路 建立INV电路 操作指令 Tools library maneger 跳出新窗口 File New cell view 出现n
  • 右击 未出现 vscode打开

    右击 未出现 vscode打开 https blog csdn net Leo zjk article details 120883156 改动三处才有效 一是command要小写 然后Icon是 字符串值 三是最后不是 1 是 v don
  • (JS逆向专栏三)某玩游戏平台网站登入MD5加密

    声明 本文章中所有内容仅供学习交流 严禁用于商业用途和非法用途 否则由此产生的一切后果均与作者无关 若有侵权 请联系我立即删除 名称 365玩游戏平台 目标 登入参数 加密类型 MD5 目标网址 http minilogin sgty co
  • js小数计算丢失精度问题

    问题描述 js在计算小数计算如 1 0 2 的时候会丢失精度 即 1 0 2 0 19999999999999996 例如 console log 1 0 8 输出 0 19999999999999996 console log 6 0 7
  • QT的信号与槽函数

    一 什么是信号和槽函数 QT中通过信号 signal 和槽函数 slot 将事件和响应函数连接起来 可以类比MFC中的操作和对应的On开头的响应函数 它的优点在于信号和槽函数是松耦合的关系 你可以通过connect将两者连接起来 也可以通过
  • 【满分】【华为OD机试真题2023 JAVA&JS】任务总执行时长

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 任务总执行时长 知识点数组循环递归 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 任务编排服务负责对任务进行组合调度 参与编排的任务有两种类型 其中一种执行时长
  • 深入理解Java虚拟机jvm-对象的访问定位

    对象的访问定位 句柄 直接指针 优劣 句柄 直接指针 创建对象自然是为了后续使用该对象 我们的Java程序会通过栈上的reference数据来操作堆上的具 体对象 由于reference类型在 Java虚拟机规范 里面只规定了它是一个指向对
  • 云原生Kubernetes:K8S集群使用带凭证的harbor仓库

    目录 一 理论 1 部署harbor 创建私有项目 使用凭证登录 二 实验 1 部署harbor 创建私有项目 使用凭证登录 三 问题 1 harbor页面无法打开 2 生成harbor 登录凭据资源清单报错 3 tomcat deploy
  • 20220129刷题--第4题-- cookie

    20220129刷题 攻防世界 web新手第4题 cookie 直接burp抓包 看到 太明显了 查看cookie php呗 还得看包 看到response中 flag cyberpeace 10c8fa3cccaab62eaf04ff97
  • 刷脸支付服务商注定掀起一场商业革命

    随着5G时代的到来 互联网 AI智能 云计算 物联网等技术得到了高速发展 集这些技术于一身的刷脸支付注定掀起一场商业革命 对于创业者来说 刷脸支付代理是一个新的选择 在狂热的市场下 各大刷脸支付服务商层出不穷 为了招募代理奇招频出 何选择家
  • Stream流

    Stream流 文章目录 文章目录 Stream流 1 集合处理数据的弊端 2 Steam流式思想概述 3 Stream流的获取方式 3 1 根据Collection获取 3 2 通过Stream的of方法 4 Stream常用方法介绍 4
  • hashmap底层以及红黑树 终于懂了!!!

    目录 0 引言 1 红黑树 0 引言 jdk 1 7里面 HashMap中的数据结构是数组 单链表的组合 以键值对 key value 的形式存储元素的 通过put 和get 方法储存和获取对象 在JDK1 6 JDK1 7中 HashMa
  • openwrt--uci指令的使用

    UCI简介 UCI是集中式配置信息管理接口 Unified Configuration Interface 的缩写 他是OpenWrt引进的一套配置参数管理系统 UCI管理了OpenWrt下最主要的系统配置参数并且提供了简单 容易 标准化的