2016-10-11 115 views
0

我使用python3鼠標的位置,我能夠使用下面的代碼來獲得Centos的7鼠標的位置:Python中獲取cron腳本

from Xlib import display 
data = display.Display().screen().root.query_pointer()._data 
data["root_x"], data["root_y"] 

然而,當我使用crontab中運行腳本,它顯示以下異常: Xlib.error.DisplayNameError:顯示名稱錯誤「」

有沒有一種方法可以使用python和cron作業獲取鼠標位置?

+0

對於cron作業,假設您可以使其工作,那麼這將是一件駭人聽聞的事情。我會試着看看每個用戶的systemd作業。 Systemd可以運行定時器類型的片段,這是cron功能的超集。並且每個用戶systemd運行的進程通常可以訪問顯示和訪問X服務器的安全cookie(取決於發行版設置)。 – spectras

回答

0

這是因爲環境變量DISPLAY在執行python腳本時沒有正確設置。嘗試在Python腳本的開頭添加以下代碼行,例如:

import os 
os.environ['DISPLAY'] = ':0.0' # the value should match your setting 
+1

在單用戶系統上,這有時可能會在某些時間正確工作。在一般情況下,不能保證':0.0'屬於正在執行'crontab'的用戶所擁有,或者是'DISPLAY'(用戶可能根本沒有使用交互式會話登錄) 。在一個適當的安全系統上,還會有一個特權問題 - 交互式會話之外的程序基本上不應該混淆交互式會話的私有部分。 – tripleee