gpt4 book ai didi

Golang 和 DBUS

转载 作者:IT王子 更新时间:2023-10-29 02:15:06 24 4
gpt4 key购买 nike

我想在 Go 中转换此 Python 代码:

#!/usr/bin/python3

import sys
import dbus

if (len(sys.argv) < 2):
print("Usage: %s <modem> <ussd-string>" % (sys.argv[0]))
sys.exit(1)

bus = dbus.SystemBus()
path = sys.argv[1]
ussdstring = sys.argv[2]

ussd = dbus.Interface(bus.get_object('org.ofono', path),
'org.ofono.SupplementaryServices')

properties = ussd.GetProperties()
state = properties["State"]

if state == "idle":
result = ussd.Initiate(ussdstring, timeout=100)[1]
elif state == "user-response":
result = ussd.Respond(ussdstring, timeout=100)
else:
sys.exit(1);

properties = ussd.GetProperties()
state = properties["State"]
print('USSD RESPONSE:\n', result)
print('USSD SESSION:\n', state)

我尝试使用 github.com/guelfey/go.dbus 库:

package main

import (
"fmt"
"os"

"github.com/guelfey/go.dbus"
)

func main() {
fmt.Printf("DBUS Test.\n")
conn, err := dbus.SessionBus()
if err != nil {
fmt.Fprintln(os.Stderr, "Failed to connect to session bus:", err)
os.Exit(1)
}

busObject := conn.Object("org.ofono", "/ril_0")
fmt.Println("busObject:", busObject)
var list []string
busObject.Call("org.ofono.SupplementaryServices.Initiate", 0, "#101#").Store(&list)
fmt.Println("list:", list)
for _, v := range list {
fmt.Println(v)
}
}

但我得到了以下响应:

DBUS Test.
Failed to connect to session bus: user: Current not implemented on linux/arm

你知道如何使用这个DBUS库吗?这个库是 ARM7 上 go 的最佳库吗?

谢谢

最佳答案

此特定问题就在错误消息中:

... user: Current not implemented on linux/arm"

user.Current 仅在进行身份验证时调用,因此如果您提供自己的 Auth它不会调用 user.Current 的方法。

看起来您必须创建自己的 conn,而不是使用全局 sessionBus。 (有关更多详细信息,请参阅 SessionBusConn.Auth 的来源)

conn, err := dbusSessionBusPrivate()
if err != nil {
return
}

auths := []dbus.Auth{dbus.AuthExternal(username), dbus.AuthCookieSha1(username, homedir)}
if err := conn.Auth(auths); err != nil {
conn.Close()
return
}

您还可以修补 go.dbus 以使用替代方法来查找 arm 的用户名和主目录,例如检查 $USER$HOME(或提交问题,或打开拉取请求)。

关于Golang 和 DBUS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35020486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com