[英]How to make Crontab run a Python script that opens the Terminal and does stuff?
我希望Crontab在特定時間運行Python
腳本。 該Python腳本使用"subprocess"
進程”庫打開終端,並使用“ Pyautogui”庫編寫內容。 怎么做?
我對Crontab
了一些研究,並使其與我的Bash腳本一起使用,該腳本可以執行其他操作。 我了解到Crontab有某種局限性 。 我使用DBUS_SESSION_BUS_ADDRESS啟用gsettings
但是現在,這是關於打開終端並編寫東西的。
Crontab條目: 00 15 * * * python3 /home/Admin/Desktop/shutdown_script.py
怎么做?
目標:我的目標是在離開該位置時同時在特定時間同時關閉我的計算機和其他19台計算機。 我使用CSSH連接到其他計算機。 我的腳本會執行此操作,並立即寫入密碼和sudo shutdown now
以同時將其全部關閉。
編輯:Python腳本
#!/usr/bin/python3
import pyautogui, time
pyautogui.hotkey("ctrlleft", "altleft", "t")
time.sleep(1)
pyautogui.write("Hello World!", interval=0.05)
在終端中手動運行=可以正常工作; 嘗試使用Crontab =不起作用
BUMP:如果不可能或沒人知道,該怎么做或有任何想法,那么我會尋找另一種方式,也許在Python中安排一些Python庫或.. idk ..找到一些東西(想法),這可能完成這個:D
使用Xorg,您需要具備以下兩項才能進入正在運行的窗口會話並開始運行應用程序:
顯示位很容易:
export DISPLAY=:0
該環境變量的格式實際上是hostname:displaynum.screennum
,縮寫為您所看到的內容。
Xauth是在X會話中傳遞秘密的一種方法,以便服務器知道此窗口屬於該用戶。 骯臟的方式:
export XAUTHORITY=/home/$your_username/.Xauthority
更清潔,更強大的方法:
xauth add $(xauth list $DISPLAY)
將xauth list
的輸出作為參數傳遞給xauth add
然后從命令行運行終端。
得到它了。
04 11 * * * export DISPLAY=:0 && /usr/bin/python3 /home/Admin/Desktop/shutdown_script.py
將export DISPLAY=:0
放入Crontab使其工作。
找到的地方對您有所幫助: 單擊我
它每天在11:04 AM運行此腳本。
如果使用的是Mac,則可以將AppleScripts與cron結合使用,以模擬打開終端並在終端中運行腳本。
0 15 * * * osascript -e 'tell app "Terminal" to do script "python3 /home/Admin/Desktop/shutdown_script.py" activate'
我發現這無法打開終端顯示,只能在后台運行我的python腳本(僅在系統進程中可見)。
可能是因為我在Linux Lubuntu 17.10上,但是我發現其他人也遇到了同樣的問題,所以我想在這里分享對我有用的解決方案。
下面是我在crontab中添加的代碼,以使其在終端窗口中工作(在我的情況下為lxterminal),如果需要在Python腳本終止后使終端窗口保持打開狀態,也可以在.py之后放置$ SHELL。
export DISPLAY=:0 && lxterminal -e bash -c '/fullpath/mypythonscript.py'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.