duagfgfn1981 2017-11-16 02:46
浏览 402
已采纳

使用Golang启动D-Bus服务

I'm now working on call and start a systemd service (mine just calls a shell script) using D-Bus API for golang.

I made a D-Bus service in /usr/share/dbus-1/system-services/org.freedesktop.hello.service

[D-BUS Service]
Name=org.freedesktop.hello
Exec=/bin/false
User=root
SystemdService=hello.service

And a systemd service in /lib/systemd/system/hello.service

[Unit]
Description=Hello

[Service]
Type=dbus
BusName=org.freedesktop.hello
ExecStart=/opt/hello.sh

I'm trying to acheive the same result of code below, which worked.

sudo gdbus call --system --dest org.freedesktop.hello --object-path /org/freedesktop/hello --method org.freedesktop.DBus.Introspectable.Introspect

However I keep getting the error in Golang,

The name org.freedesktop.hello was not provided by any .service files

My code for now is

package main

import (
    "encoding/json"
    "github.com/godbus/dbus"
    "os"
    "github.com/godbus/dbus/introspect"
)

func main() {
    conn, error1 := dbus.SessionBus()
    if error1 != nil {
        panic(error1)
    }
    node, err2 := introspect.Call(conn.Object("org.freedesktop.hello", "/org/freedesktop/hello"))
    if err2 != nil {
        panic(err2)
    }
    data, _ := json.MarshalIndent(node, "", "   ")
    os.Stdout.Write(data)
}

There aren't so many info about this stuff, so I want to get some help. Thanks!

  • 写回答

1条回答 默认 最新

  • drwf69817 2017-11-16 07:18
    关注
    sudo gdbus call --system ...
    

    That's on the system bus.

    ...
    conn, error1 := dbus.SessionBus()
    ...
    

    And this is on the session bus.

    Try to use something like dbus.SystemBus().

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名