
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
syslog クローン:
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)
13:24:04以降、cronが動作を停止したようです。それ以降に試行したのですが
編集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!
ルート権限がない場合にも同じエラーが発生します。明らかにopenvpnがインストールされています。
3回目の編集:
これを実行するとエラーは発生しません。
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 はスクリプトを sudo ではなく root として実行する必要があります...またはそれに似た方法で、スクリプトは実行中のユーザーからファイルを取得します...それが理にかなっている場合。
それをどう解決すればいいのか全く分かりません!
答え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
「3 回目の編集」では、ツールがツールを起動したユーザーのホーム ディレクトリで構成ファイルを探していることも示されています。このファイルは のホーム ディレクトリにあるのであって、 のpat
ホーム ディレクトリにあるのではないとおっしゃっていますroot
。
ここでは 2 つのオプションがあります。
- 設定ファイルをツールが見つけられる場所に移動するか、
- ツールに場所
HOME
を伝えます。
2番目のオプションは、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 変数の一部ではない場所にあります...これが、発生したエラーの原因です。