使用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!
我现在正在通话,并使用D-Bus启动systemd服务(我只是调用了shell脚本) 用于golang的API。 p>
我在/usr/share/dbus-1/system-services/org.freedesktop.hello.service p> \中创建了D-Bus服务 n
[D-BUS服务]
Name = org.freedesktop.hello
Exec = / bin / false
User = root
SystemdService = hello.service
code> pre>
和/lib/systemd/system/hello.service中的systemd服务 p>
[Unit]
Description = Hello
[Service]
Type = dbus
BusName = org.freedesktop.hello
ExecStart = / opt / hello.sh
code> pre>
我正在尝试实现以下代码的相同结果,即 p>
sudo gdbus调用--system --dest org.freedesktop.hello --object-path / org / freedesktop / hello --method org.freedesktop.DBus。 Introspectable.Introspect
code> pre>
但是我一直在Golang中报错, p>
名称org.freedesktop.hello 没有任何.service文件提供
code > pre>
我现在的代码是 p>
包main
import(
“ encoding / json”
“ github。 com / godbus / dbus“
” os“
” github.com/godbus/dbus/introspect"
)
func main(){
conn,error1:= dbus.SessionBus()
如果 error1!= nil {
panic(error1)
}
节点,err2:= introspect.Call(conn.Object(“ org.freedesktop.hello”,“ / org / freedesktop / hello”))
如果 err2!= nil {
panic(err2)
}
data,_:= json.MarshalIndent(node,“”,“”)
os.Stdout.Write(data)
}
代码> pre>
关于这些东西的信息并不多,所以我想寻求帮助。 谢谢! p>
div>
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()
.