OpenWrt中rpcd比较重要
目前用过的地方有
1. rpcd被uhttpd调用,网页修改配置后 ,由rpcd通知procd调用相应的服务。
2. 可以使用rpcd注册ubus接口,在/usr/libexec/rpcd/目前下,用脚本实现自己的ubus接口,rpcd启动后会遍历/usr/libexec/rpcd/添加ubus。 新添加ubus后,要重启rpcd服务才能生效。
注意:文件名为ubus对象的名字。
openwrt官网的示例,例如 cat /usr/libexec/rpcd/foo
#!/bin/sh
case "$1" in
list)
echo '{ "bar": { "arg1": true, "arg2": 32, "arg3": "str" }, "toto": { } }'
;;
call)
case "$2" in
bar)
# read the arguments
read input;
# optionally log the call
logger -t "foo" "call" "$2" "$input"
# return json object or an array
echo '{ "hello": "world" }'
;;
toto)
# return json object or an array
echo '[ "item1", "item2", "item3" ]'
;;
esac
;;
esac
加载完成后,可以使用ubus命令调试
$ ubus list -v
...
'foo' @686f0592
"bar":{"arg1":"Boolean","arg2":"Integer","arg3":"String"}
"toto":{}
...
$ ubus call -S foo bar '{"arg1": true }'
{{"hello":"world"}}
$ ubus -S call foo toto
{["item1","item2","item3"]}
OpenWrt的rpcd在系统中扮演关键角色,它被uhttpd用于处理网页配置更新,通过rpcd通知procd管理服务。此外,用户可以创建自定义的ubus接口,将脚本放在/usr/libexec/rpcd/目录下,rpcd启动时会加载这些接口。不过,新接口需重启rpcd服务后方能生效。
2600

被折叠的 条评论
为什么被折叠?



