我想在我的服务器上编写一些Python脚本,在那里我可以通过DBus Python库与finch(控制台接口pidgin,接口看起来像links2)通信,以发送消息或检查buddy online状态。
如果您在X中执行此操作,则此操作有效。请在X终端中运行finch,并在另一个终端中运行Python脚本,并且没有错误/异常。
但如果不使用X,则必须在TTY1(ctrl+alt+f1)中运行finch,在TTY2(ctrl+alt+f2)中运行python脚本,但python脚本将失败。
以下是脚本的前几行:

import dbus
bus = dbus.SessionBus() # gives EXCEPTION error
obj = bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
...

异常错误是:
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.Spawn.ExecFailed: dbus-launch failed to autolaunch D-Bus session: Autolaunch error: X11 initialization failed.`

我在某个地方读到,也许你需要在同一个TTY中运行finch和脚本。但是我无法正确地测试它,因为它不像在一行上运行cd,在下一行上运行ls。您键入finch,它就会运行,并且您不能再键入任何其他命令,如links2。我试着运行finch &,但这似乎会暂停finch,运行脚本也会产生同样的错误。
解决方案?谢谢。

最佳答案

安装screen
dbus-launch screen
finch
ctrl+AC键
python myscript

07-24 09:38