
我嘗試使用 systemctl 和 crontab 但沒有成功。
這是腳本:
#!/bin/bash
cyberghostvpn --country-code AU --city Brisbane --connect
權利:
-rwxr-xr-x 1 pat pat 71 nov 28 13:04 ghoststart.sh
我的 crontab 是這樣運作的:sudo crontab -e
@reboot sleep 120; /home/pat/Documents/cyberghost/ghoststart.sh
我可以在終端機中運行腳本沒有問題:sudo sh ghoststart.sh
系統日誌 cron :
Nov 28 13:17:57 mrpotato cron[679]: (CRON) INFO (pidfile fd = 3)
Nov 28 13:17:57 mrpotato cron[679]: (CRON) INFO (Running @reboot jobs)
Nov 28 13:17:59 mrpotato CRON[726]: (root) CMD (sh /home/pat/Documents/cyberghost/ghoststart.sh)
Nov 28 13:24:04 mrpotato cron[658]: (CRON) INFO (pidfile fd = 3)
Nov 28 13:24:04 mrpotato cron[658]: (CRON) INFO (Running @reboot jobs)
似乎 cron 在 13:24:04 之後停止工作,因為在那之後我做了嘗試
編輯2:基於這我努力了
root@mrpotato:/var/spool/cron/crontabs# /bin/sh -c "(export PATH=/usr/bin:/bin; /home/pat/Documents/cyberghost/ghoststart.sh </dev/null)"
Prepare OpenVPN connection ...
Please Install "openvpn" first!
如果我不是 root,它會給我同樣的錯誤,顯然 openvpn 已安裝
第三次編輯:
如果我這樣做,我不會得到任何錯誤。
pat@mrpotato:~$ sudo /bin/sh -c "(export PATH=/usr/bin:/bin; /home/pat/Documents/cyberghost/ghoststart.sh </dev/null)"
但如果我這樣做我會得到一個:
root@mrpotato:~# /bin/sh -c "(export PATH=/usr/bin:/bin; /home/pat/Documents/cyberghost/ghoststart.sh </dev/null)"
錯誤是:
Traceback (most recent call last):
File "cyberghostvpn.py", line 580, in <module>
File "cyberghostvpn.py", line 346, in main
File "libs/config.py", line 45, in __init__
File "libs/config.py", line 112, in readConfigFile
Exception: The config file "/home/root/.cyberghost/config.ini" does not exist!
[3845] Failed to execute script cyberghostvpn
config.ini 存在於/home/pat/.cyberghost/
cron 必須以 root 身分執行腳本,而不是使用 sudo...或類似的東西,腳本從正在執行的使用者取得檔案...如果有意義的話。
我不知道如何解決這個問題!
答案1
您的ghoststart.sh
腳本(或cyberghostvpn
其中的內容)正在嘗試透過呼叫openvpn
可執行檔來啟動 OpenVPN。在$PATH
腳本中找不到此可執行檔。在終端機中使用command -v openvpn
來尋找可執行檔的路徑。
如果您的openvpn
可執行檔位於/usr/sbin
,您可以將 crontab 計畫編寫為
@reboot sleep 120 && PATH="$PATH:/usr/sbin" /home/pat/Documents/cyberghost/ghoststart.sh
您的「第三次編輯」也表示該工具正在啟動該工具的使用者的主目錄中尋找設定檔。您說您的主目錄中有此文件pat
,而不是 的主目錄中root
。
您在這裡有兩個選擇:
- 將設定檔移到工具期望找到它的位置,或者
- 告訴工具在哪裡
HOME
。
第二個選項可以透過修改 cron 作業來完成
@reboot sleep 120 && HOME=/home/pat PATH="$PATH:/usr/sbin" /home/pat/Documents/cyberghost/ghoststart.sh
答案2
root@mrpotato:/var/spool/cron/crontabs# /bin/sh -c "(export PATH=/usr/bin:/bin;/home/pat/Documents/cyberghost/ghoststart.sh
你的 openvpn 二進位位於哪裡?在我的 Debian 上,它不是/usr/sbin
您傳遞給腳本的 PATH 變數的一部分...這解釋了您遇到的錯誤。