zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    VMware 克隆一个虚拟机(win7)
    HDU 5695 Gym Class (拓扑排序、贪心、优先队列)
    HDU2647 Reward (拓扑排序、反向建图)
    HDU 3342 Legal or Not (拓扑排序、有向图是否存在环)
    Vue框架简介及简单使用
    Linux文件常用指令
    Linux系统相关命令
    Linux关机指令详解
    linux目录结构
    Linux用户相关命令
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/13646634.html
Copyright © 2011-2022 走看看