
Я пробовал с 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
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 должен запускать скрипт от имени пользователя 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
Ваша "3-я правка" также указывает, что инструмент ищет файл конфигурации в домашнем каталоге пользователя, запустившего инструмент. Вы говорите, что у вас есть этот файл в домашнем каталоге , 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, которую вы передали вашему скрипту... что объясняет возникшую ошибку.