나는 성공하지 못한 채 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
시스템 로그 크론:
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!
루트가 아닌 경우 동일한 오류가 발생합니다. 분명히 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은 sudo... 또는 이와 유사한 것을 사용하는 대신 스크립트를 루트로 실행해야 합니다. 스크립트는 실행 중인 사용자로부터 파일을 가져옵니다.
이 문제를 해결하는 방법을 모르겠습니다!
답변1
귀하의 ghoststart.sh
스크립트(또는 그 안에 있는 내용)가 실행 파일을 호출하여 OpenVPN을 시작하려고 cyberghostvpn
합니다 . 스크립트에서 실행 파일을 찾을 수 없습니다 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 "(내보내기 PATH=/usr/bin:/bin;/home/pat/Documents/cyberghost/ghoststart.sh
openvpn 바이너리는 어디에 있나요? 내 데비안에서는 /usr/sbin
스크립트에 전달하는 PATH 변수의 일부 가 아닙니다 . 이는 발생하는 오류를 설명합니다.