2011-04-03 43 views
2

我想在我的服務器上執行一些Python腳本,我可以通過DBus Python庫與finch(控制檯界面pidgin,界面看起來像links2)通信,以發送消息或檢查好友在線狀態。DBus Finch/Pidgin without X11

This works if you do it in X.在X終端運行finch並在另一個終端中運行Python腳本,沒有錯誤/異常。

但是,如果你這樣做沒有X,你必須在TTY1(CTRL + ALT + F1)和TTY2的python腳本(Ctrl + Alt + F2),但python腳本將失敗運行finch

以下是腳本的前幾行:

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.` 

我讀的地方,也許你需要運行finch和腳本都在同樣的TTY。但是我無法正確測試,因爲它不像在一行上運行cd,在下一行上運行ls。你鍵入finch,它運行,你不能再輸入任何其他命令,如links2。我試着運行finch &,但似乎暫停finch,並且運行該腳本也會出現相同的錯誤。

解決方案?謝謝。

+0

我基本上想跑步一個腳本,它可以向某人發送消息或者檢查某人的狀態,而不需要X.只需要一些我可以進入並運行該腳本的東西。也許你可以給我一個替代解決方案,而不一定要涉及雀或dbus。 – Robin 2011-04-04 11:19:21

+0

感謝您提出問題並回答問題。 – ShreevatsaR 2011-08-17 10:10:17

回答

5

安裝screen

  1. dbus-launch screen
  2. finch
  3. CTRL + AC
  4. python myscript
+0

這就是解決方案,目前無法將其標記爲我的答案,明天就得做。 – Robin 2011-04-04 12:37:44

+0

謝謝!我一直在尋找關於爲什麼我無法在無頭系統上使用gvfs的日子。以這種方式發射dbus的竅門! – dotnix 2012-03-17 21:44:22

0

我認爲finch需要一些顯示。要啓動它的服務器嘗試使用xvfb的經營http://en.wikipedia.org/wiki/Xvfb

+0

不,finch本身運行正常,沒有X. – Robin 2011-04-04 01:54:23

+0

你確定dbus-daemon正在運行嗎? (通常x11啓動它) – Alexander 2011-04-04 06:39:44

+0

X11不啓動dbus-daemon,dbus-daemon通常由桌面環境啓動。 – datenwolf 2011-04-04 08:29:55