通过命令行调用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类似,但更简单、支持传输大量数据

 

posted @ 2020-08-31 17:15  drelo  阅读(302)  评论(0编辑  收藏  举报