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"]}