我试图使用"ubus调用uci add_list ..“向network.lan.ifname添加一个新的接口。
用于直接运行它的语法是(它正在工作):
uci add_list network.lan.ifname="new_iface_name"我尝试使用以下shell命令使用ubus调用将接口添加到列表中:
具有独立定义的选项的
ubus call uci add_list '{"config" : "network", "section" : "lan", "option" : "ifname", "values" : "new_iface_name"}}'这将导致以下错误消息:
Command failed: Method not found没有选项的
ubus call uci add_list '{"config" : "network", "section" : "lan", "values" : {"ifname"="new_iface_name"}}'这将产生相同的错误消息:
Command failed: Method not foundubus call uci add_list '{"config" : "network", "section" : "lan", "valures" : {"ifname"="adam"}}这将导致解析消息失败:
Failed to parse message data预先感谢任何能说明正确语法要求的人。
发布于 2022-04-18 04:11:17
根据用例使用"set“或"add”方法:以system服务器为例:
ubus call uci set '{"config":"system","type":"timeserver","section":"ntp","values":{"enabled":"1","server":["0.openwrt.pool.ntp.org","1.openwrt.pool.ntp.org"]}}'
uci show system.ntp.server
system.ntp.server='0.openwrt.pool.ntp.org' '1.openwrt.pool.ntp.org'使用set,您应该将list选项值作为数组对象传递给您想要设置的所有条目。它用新值重写整个list选项。
如果您只想添加一个值,请使用" add ",但请注意,您必须提供"name",否则将创建一个新的未命名部分。
ubus call uci add '{"config":"system","type":"timeserver","name":"ntp","values":{"server":["add4.openwrt.pool.ntp.org"]}}'
uci show system.ntp.server
system.ntp.server='0.openwrt.pool.ntp.org' '1.openwrt.pool.ntp.org' 'add4.openwrt.pool.ntp.org'发布于 2020-09-01 08:44:32
您需要确保ubus上有"add_list“。
ubus -v list uci
'uci' @387e9297
"configs":{}
"get":{"config":"String","section":"String","option":"String","type":"String","match":"Table","ubus_rpc_session":"String"}
"state":{"config":"String","section":"String","option":"String","type":"String","match":"Table","ubus_rpc_session":"String"}
"add":{"config":"String","type":"String","name":"String","values":"Table","ubus_rpc_session":"String"}
"set":{"config":"String","section":"String","type":"String","match":"Table","values":"Table","ubus_rpc_session":"String"}
"delete":{"config":"String","section":"String","type":"String","match":"Table","option":"String","options":"Array","ubus_rpc_session":"String"}
"rename":{"config":"String","section":"String","option":"String","name":"String","ubus_rpc_session":"String"}
"order":{"config":"String","sections":"Array","ubus_rpc_session":"String"}
"changes":{"config":"String","ubus_rpc_session":"String"}
"revert":{"config":"String","ubus_rpc_session":"String"}
"commit":{"config":"String","ubus_rpc_session":"String"}
"apply":{"rollback":"Boolean","timeout":"Integer","ubus_rpc_session":"String"}
"confirm":{"ubus_rpc_session":"String"}
"rollback":{"ubus_rpc_session":"String"}
"reload_config":{}这是rpcd中的代码。
static const struct ubus_method uci_methods[] = {
{ .name = "configs", .handler = rpc_uci_configs },
UBUS_METHOD("get", rpc_uci_get, rpc_uci_get_policy),
UBUS_METHOD("state", rpc_uci_state, rpc_uci_get_policy),
UBUS_METHOD("add", rpc_uci_add, rpc_uci_add_policy),
UBUS_METHOD("set", rpc_uci_set, rpc_uci_set_policy),
UBUS_METHOD("delete", rpc_uci_delete, rpc_uci_delete_policy),
UBUS_METHOD("rename", rpc_uci_rename, rpc_uci_rename_policy),
UBUS_METHOD("order", rpc_uci_order, rpc_uci_order_policy),
UBUS_METHOD("changes", rpc_uci_changes, rpc_uci_config_policy),
UBUS_METHOD("revert", rpc_uci_revert, rpc_uci_config_policy),
UBUS_METHOD("commit", rpc_uci_commit, rpc_uci_config_policy),
UBUS_METHOD("apply", rpc_uci_apply, rpc_uci_apply_policy),
UBUS_METHOD("confirm", rpc_uci_confirm, rpc_uci_rollback_policy),
UBUS_METHOD("rollback", rpc_uci_rollback, rpc_uci_rollback_policy),
UBUS_METHOD_NOARG("reload_config", rpc_uci_reload),
};https://stackoverflow.com/questions/59544053
复制相似问题