UCI提供给shell和lua使用的配置接口

2023-11-20

转自:http://m.blog.csdn.net/article/details?id=47989493


1、uci提供给shell使用的配置借口有两套:

1)config_get用来读取一个config值。命令格式如下:

config_getvar_name setction_name option_name <default>

var_name:    用来存放config值的变量。

settion_name:  就是section 的名字

option_name:  就是option的名字

 

config_get_bool的功能与config_get差不多,不过这个函数会把返回值转换成整数值。

 

config_set用来配置config值,命令格式如下:

config_setsection_name option_name var_name

各个字段的含义同上。在使用config_get与config_set之前,要先调用函数config_load(config_file),这个函数会把config_file载入内存。

 

config_foreach是针对每一个section调用一个回调函数。命令格式如下:

config_foreachcallback_func section_type <customer_val>

section_type是每一个section的类型

callback_func就是回调函数,它有2个参数,第一个是section name,如果有定义customer_val,那么第二个就是customer_val。我们可以在config_foreach里调用config_get与config_set

 

config_cb()这个回调函数会在调用config_load时,对每一个section调用,这个函数有两个参数,分别是section_type 与section_name。

 

option_cb()跟config_cb类似,不过是针对每一个option,这个函数也有两个参数,分别是option_name 与option_value.


2)uciset network.wan.proto=pppoe修改后

uci show network.wan.proto来查看。

但是这个时候用cat /etc/config/network会看到proto的值没有改,那是因为uci set只是改变内存里的值,

要写到文件,可以使用命令uci commit。


2、UCI提供给Lua脚本使用的接口如下:

在Lua中也有一组接口用来存取UCIconfig的值,使用与shell中的函数大同小异。以下就简单介绍:

X = uci.cursor() 首先要创建一个cursor X。有了这个cursor对象之后,我们就可以调用对象中的方法。

X:get(“config_file”,“section_name”, “option_name”),这个方法是用来获取option的值。

 

X:set(“config_file”,“section_name”, “option_name”, val),这个方法用来把val的值赋值给option_name对应的option_value

 

X:foreach(“config_file”,“type”, function(s) ... End) 针对某一类型的section,调用回调函数,参数s是一个table,包含所有option的值,还包括两个特殊的值:

s[‘.type’]-->section type

S[‘.name’]-->section name


其实这两套接口再这两种脚本语言中可以通用,相互调用。

现在一个问题,shell的那套接口用config_load接口加载了配置文件到内存中,用config_set等接口修改了,但是还没找到一个接口可以将内存的的这些修改过的值写到文件中。就像类似UCI commit和X:commit的作用。

详细介绍可以看链接:http://wiki.openwrt.org/doc/techref/uci#api

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UCI提供给shell和lua使用的配置接口 的相关文章

随机推荐

  • 抖音如何变现(赚钱)

    未来 每个人都能出名15分钟 安迪 沃霍尔 美国著名波谱艺术领袖 有必要见一下伟大预言家的风采 预言了短视频的兴起 突如一夜春风来 五洲四海刷抖音 2017 2018抖音突然火起了 从城市到农村 从国内到国外 从老人到小孩 从男人到女人 各
  • 小程序云服务器带宽要求,小程序云服务器带宽要求

    小程序云服务器带宽要求 内容精选 换一换 当您发现云服务器的运行速度变慢或云服务器突然出现网络断开的情况 则可能是云服务器的带宽和CPU利用率过高导致 如果您已经通过云监控服务创建过告警任务 当CPU或带宽利用率高时 系统会自动发送告警给您
  • JSONObject与JSONArray的简单使用

    JSONObject 大家看到JSONObject就应该真的这个类是和Json格式相关的吧 没错 JSONObject就是将数据json化的一个类 它是以键值对存在的 key value形式和map类型比较相像 下面我们先来简单使用一下这个
  • React class组件、react-hook函数组件分别实现五子棋

    react class类组件 react hook函数组件分别实现五子棋 前言 使用create react app脚手架简单搭建 不用安装其他依赖 纯 js css实现 这里就只是简单的说明目录结构和思路 具体的代码实现请转到 Githu
  • 解决:Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:

    报错信息如下 org apache ibatis exceptions PersistenceException Error querying database Cause com mysql jdbc exceptions jdbc4 M
  • 【学习笔记】开源中文对话预训练模型调研总结

    开源中文对话预训练模型调研 文章目录 开源中文对话预训练模型调研 1 CDial GPT 主要工作 LCCC数据集 数据清洗策略 基于规则的清洗 基于分类器的清洗 模型 输入表征 训练 2 GPT2 chitchat 3 EVA1 0 WD
  • 网络安全态势感知和OODA模型

    网络安全已经成为全球范围内的重要问题之一 随着信息化和数字化的发展 各种网络攻击和威胁不断出现 给个人 企业 组织和国家带来了巨大的安全风险和经济损失 为了应对这一挑战 网络安全态势感知和OODA模型成为了网络安全领域中非常重要的工具 一
  • python 安装selenium最方便的方法

    dp MacBook Pro 3 chromedriver mac arm64 apple pip install chromedriver autoinstaller Looking in indexes http pypi tuna t
  • springmvc多视图解析

  • linux 复位usb设备 模拟热插拔脚本

    获取USB设备数量 DEVICE NUM lspci grep USB awk F print 1 wc l 获取设备号 DEVICE lspci grep USB awk F print 0000 1 sed n i p 设备解绑 ech
  • IPsec ISAKMP

    Interne 安全连接和密钥管理协议 ISAKMP 是 IPsec 体系结构中的一种主要协议 该协议结合认证 密钥管理和安全连接等概念来建立政府 商家和因特网上的私有通信所需要的安全 因特网安全联盟和密钥管理协议 ISAKMP 定义了程序
  • 力软-获取jfGrid值,并改变值

    问题 页面中jfGrid为动态加载出来的 在js中动态改变cell值之后 需要将jfGrid的值重新赋值一遍 解决 var rowindex 0 jfgrid layout 0 jfGridGet rowdatas rowindex F R
  • Android 在模拟器上使用Geocoder解析Location报 grpc failed无解

    在做定位功能时 用Geocoder解析Location报了一个错 我把模拟器位置设立在印度孟买 按理说Location正常 经纬度可用 应该没问题 但却给我报出异常 在翻了很多资料后感觉是模拟器的原因 因为我在真机上定位的地方都能解析 而且
  • 小白入门C#初探Web简易页面显示信息小案例

    1 创建新项目 选择ASP NET Core Web应用 模型 视图 控制器 然后点击下一步 然后在项目名称里面填写CSharpDemo 点击下一步 直至创建即可 目录结构 Connected Services 是Visual Studio
  • CentOS 8安装并配置NFS服务

    先决条件 我们假设您有一台运行CentOS 8的服务器 我们将在该服务器上设置NFS服务器和其他充当NFS客户端的计算机 服务器和客户端应该能够通过专用网络相互通信 如果您的托管服务提供商不提供私有IP地址 则可以使用公共IP地址并配置服务
  • Python学习第十二天——logging

    1 日志级别 CRITICAL 50 FATAL CRITICAL ERROR 40 WARNING 30 WARN WARNING INFO 20 DEBUG 10 NOTSET 0 不设置 日志的设置是自下而上的 如果等级为ERROR
  • vs2008常用操作汇总

    1 OpenCV2 1环境配置 1 Tools gt Options gt Projects and Solutions gt VC Drectories Show directories for选择include files 加入目录 D
  • Android-给RecyclerView添加分隔线

    RecyclerView和ListView不同 是不自带分隔线的 如此 在讲为Item加入分割线本质的前 先来介绍 认识一下ChildView 也就是平时我们用到的ListView RecyclerView中的getChildAt int
  • 【解决】Win 10+Visual Studio community 2017,许可证到期,不能登录问题

    Win 10 Visual Studio community 2017 许可证到期 不能登录问题 试了很多种方式 会出现很多问题 最终尝试成功 1 在打开vs之后 第一时间点击帮助 发送反馈 报告问题 2 在弹出的对话框中点击发现新的许可证
  • UCI提供给shell和lua使用的配置接口

    转自 http m blog csdn net article details id 47989493 1 uci提供给shell使用的配置借口有两套 1 config get用来读取一个config值 命令格式如下 config getv