通过命令行调用varlink接口 示例
systemd 的User/Group Record Lookup API 使用了Varlink API
用于查询用户/组记录(功能类似getpwname、nss)
(systemd提供了命令行程序userdbctl(1),可查询用户记录、组记录、组中用户、用户的组等)
通过一个例子看看varlink(1) 怎么用:
➜ ~ varlink call unix:/run/systemd/userdb/io.systemd.NameServiceSwitch/io.systemd.UserDatabase.GetUserRecord '{"uid":1000, "service":"io.systemd.NameServiceSwitch"}' { "incomplete": false, "record": { "gid": 998, "homeDirectory": "/home/itsme", "lastPasswordChangeUSec": 1400068500000000, "passwordChangeMaxUSec": 8639913600000000, "passwordChangeNow": false, "passwordChangeWarnUSec": 604800000000, "privileged": { "hashedPassword": [ "xxxxxxxxx" ] }, "shell": "/bin/zsh", "status": { "263c4c1119384ea381f2eda64908026a": { "service": "io.systemd.NameServiceSwitch" } }, "uid": 1000, "userName": "itsme" }
解释
$ varlink call unix:/run/systemd/userdb/io.systemd.NameServiceSwitch/io.systemd.UserDatabase.GetUserRecord '{"uid":1000, "service":"io.systemd.NameServiceSwitch"}'
unix:/run/systemd/userdb/io.systemd.NameServiceSwitch/ 路径名
io.systemd.UserDatabase 接口名
GetUserRecord 方法名
'{"uid":1000, "service":"io.systemd.NameServiceSwitch"}' json格式的参数
varlink功能和dbus类似,但更简单、支持传输大量数据