uci命令、shell接⼝、API接⼝
uci 命令:
uci help:
Usage: uci [<options>]<command> [<arguments>]
Commands:
百度api接口batch
export [<config>] 导出配置⽂件
import [<config>] 以uci语法导⼊配置⽂件
changes [<config>] 列出配置⽂件分阶段修改的内容(没有commit),若未指定配置⽂件,则导出所有配置⽂件的修改
commit [<config>] 对给定的配置⽂件写⼊修改,如果没有指定参数则将所有的配置⽂件写⼊⽂件系统
add <config><section-type> 增加指定配置⽂件的类型为section-type的匿名区段
add_list <config>.<section>.<option>=<string> 对已存在的list选项增加字符串
del_list <config>.<section>.<option>=<string> 删除已存在的list选项的字符串
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> 设置配置⽂件的搜索路径 (default: /etc/config)
-d <str> 在uci显⽰中设置列表值的分隔符 in uci show
-f <file> 使⽤<file>作为输⼊,⽽不是stdin
-m 导⼊时,将数据合并到现有包中
-n 名称未命名部分导出(默认)
-N 不要命名unname dsections
-p <path> 添加配置更改⽂件的搜索路径
-P <path> 添加配置更改⽂件的搜索路径,并使⽤默认值
-q 安静模式(不打印错误信息)
-s 强制严格模式(停⽌解析器错误,默认)
-
S 停⽌严格模式
-X 不要在'show'上使⽤扩展语法
uci shell 接⼝:
注:以"uci_"开头的函数和以“config_”开头的函数⼤多数功能完全相同,唯⼀不同的是uci_get等函数直接从⽂件中获取,“config_get”函数从环境变量中读取
/lib/config/uci.sh
#参考对应的命令实现
uci_load #从uci⽂件中加载配置并设置到环境变量中
uci_set_default
uci_revert_state
uci_set_state()
uci_toggle_state
uci_set
uci_get_state #指定从/var/state中获取状态值
uci_get #从uci⽂件中获取值
uci_add
uci_rename
uci_remove
uci_commit
/lib/functions.sh
注意:在使⽤“config_”开头的函数时要先使⽤config_load,将配置⽂件载⼊环境变量
#在字符串前加‘:’并返回“:123”
w=debug 123
echo $w
输出:":123"
config
#将配置节设置到环境变量中,供uci.sh调⽤
option
#将配置节中的选项设置到环境变量中,供uci.sh调⽤
list
#将配置节中的链表设置到环境变量中,供uci.sh调⽤
#config_unset
#调⽤config_set 清空<section>.<option>的value值
#config_unset <section> <option>
#config_load: 调⽤uci_load函数从配置⽂件中读取配置然后设置到环境变量中
config_load <config>
#config_get:从当前环境变量中获取配置值
# variable:⽤来存储config值的变量
#section/option:要获取节点/选项的名字
config_get <variable> <section> <option> [<default>]
#config_get_bool:从当前环境变量中获取配置值 ,并把值转换成整数
config_get_bool <variable> <section> <option> [<default>]
#config_set:将变量设置到环境变量中以便后续读取(注:并未设置到配置⽂件中)
#section/option
#value:要为该节点设置的值
config_set <section> <option> <value>
#config_foreach:遍历每个section去调⽤callback_func函数(callback_func 的⼊参为section name)
#[<section type>]:只遍历这个类型的
config_foreach <callback_func> [<section type>]
#config_list_foreach:遍历section下list的option值,并调⽤callback_func函数(⼊参为list option的值,有多少值调⽤多少次)config_list_foreach <section> <list> <callback_func>
#加载/etc/modus.d/*下⾯的所有模块
insert_modules
#应⽤shell脚本
include <shell script> [<shell script>......]
append
list_contains
reset_cb
package
default_prerm
default_postinst
find_mtd_index
find_mtd_part
group_add
group_exists
group_add_next
group_add_user
user_add
user_exists
uci重要的结构体:
struct uci_context
{
/* list of config packages */
struct uci_list root;
/* parser context, use for error handling only */ struct uci_parse_context *pctx;
/* backend for import and export */
struct uci_backend *backend;
struct uci_list backends;
/* uci runtime flags */
enum uci_flags flags;
char *confdir;
char *savedir;
/* search path for delta files */
struct uci_list delta_path;
/* private: */
int err;
const char *func;
jmp_buf trap;
bool internal, nested;
char *buf;
int bufsz;
};
uci_context:uci上下⽂结构,贯彻查询、更改配置⽂件全过程
struct uci_package
{
struct uci_element e;
struct uci_list sections;
struct uci_context *ctx;
bool has_delta;
char *path;
/* private: */
struct uci_backend *backend;
void *priv;
int n_section;
struct uci_list delta;
struct uci_list saved_delta;
};
uci_package:对应⼀个配置⽂件
struct uci_section
{
struct uci_element e;
struct uci_list options;
struct uci_package *package;
bool anonymous;
char *type;
};
uci_section:对应配置⽂件中的节
struct uci_option
{
struct uci_element e;
struct uci_section *section;
enum uci_option_type type;
union {
struct uci_list list;
char *string;
} v;
};
uci_option:对应配置⽂件节中的option和list
struct uci_ptr
{
enum uci_type target;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论