Lubuntu cronjob; не могу запускать дополнительные сценарии или видеть маршруты

Я запускаю Lubuntu на виртуальной машине и пытаюсь настроить сценарий, который запускается каждую минуту, чтобы проверить, активен ли VPN, если нет, он все выключает и снова включается. Когда я запускаю скрипт вручную, все работает так, как задумано, но при настройке как cronjob он терпит неудачу почти на каждом шагу.

Во-первых, он не может обнаружить таблицу маршрутизации. При запуске вручную он может видеть туннель, но при запуске в качестве cron он терпит неудачу и пытается все закрыть.

Во-вторых, он не может выполнить установку дополнительных скриптов / программ. Он доходит до «запуска vpn», а затем просто закрывается, любой вывод всегда останавливается здесь, но только как cron, запускается вручную, он запускает программу vpn.

Я также не могу получить вывод для перенаправления в файл, если я не добавляю каждый оператор эха с помощью >> / home / localuser1 / aqlog.txt. Добавление этого в команду cron ничего не дает.

#!/bin/bash
PATH=/home/localuser1/bin:/home/localuser1/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin

echo "-----------------------------------Script started  $(date)"

echo "Check VPN"
if [route | grep tun0 -c ]; then
    echo "VPN running, check qbit"
    if [pgrep qbit ]; then
        echo "All active, no action needed"
    else
        echo "Not active, starting qbit"
        nohup /usr/bin/qbittorrent >/dev/null &
    fi
else
    echo "no VPN, killing all"
    pkill qbit
    pkill pia
    sleep 2
    echo "Starting VPN"
    nohup /home/localuser1/.pia_manager/pia_manager/run.sh >/dev/null &
    echo "Waiting for VPN to start" 
    sleep 15
    echo "Check VPN active"
    if [route | grep tun0 -c]; then
        echo "VPN active, starting qbit"
        nohup /usr/bin/qbittorrent >/dev/null &
    else
        echo "No VPN, end of script"
        fi
fi
echo "Exiting script"   

У меня также есть следующая настройка в crontab, где autoquit.sh - произвольное имя сценария, приведенного выше:

# m h  dom mon dow   command
* * * * * /home/localuser1/autoquit.sh
0
30.05.2017, 04:41
1 ответ

Ну, благодаря услужливому пользователю на Reddit, я смог понять это, поэтому я решил опубликовать здесь, если кто-то столкнется с таким же препятствием. Проблема в том, что я пытался запустить программу с графическим интерфейсом через cron, которая не пропускала переменную ENV, а это означает, что у нее не было возможности узнать, где отображать. Как только я добавил DISPLAY=:0 через этот полезный форум, он заработал точно так, как предполагалось, и теперь запускает программы.

Исправленный код ниже:

#!/bin/bash
PATH=/home/localuser1/bin:/home/localuser1/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin

echo "-----------------------------------Script started  $(date)" >>/home/localuser1/aqlog.txt

echo "Checking VPN status" >>/home/localuser1/aqlog.txt
vpnstatus="$(route | grep tun0 -c)"
if [ "$vpnstatus" -gt "0" ]; then
    echo "VPN is running, checking qbit" >>/home/localuser1/aqlog.txt
    qbitstatus="$(pgrep qbit)"
    if [ -n "$qbitstatus" ]; then
        echo "All active, no action needed" >>/home/localuser1/aqlog.txt
    else
        echo "Not active, starting qbit" >>/home/localuser1/aqlog.txt
        nohup qbittorrent >/dev/null &
    fi
else
    echo "no VPN, killing all" >>/home/localuser1/aqlog.txt
    pkill qbit
    pkill pia
    sleep 2
    echo "Starting VPN" >>/home/localuser1/aqlog.txt
    nohup /home/localuser1/.pia_manager/pia_manager/run.sh >/dev/null &
    echo "Waiting for VPN to start"  >>/home/localuser1/aqlog.txt
    sleep 15
    echo "Checking if VPN is active" >>/home/localuser1/aqlog.txt
    vpnstatustwo="$(route | grep tun0 -c)"
    if [ "$vpnstatustwo" -gt "0" ]; then
        echo "VPN is active, starting qbit" >>/home/localuser1/aqlog.txt
        nohup qbittorrent >/dev/null &
    else
        echo "No VPN, end of script" >>/home/localuser1/aqlog.txt
    fi
fi
echo "Exiting script" >>/home/localuser1/aqlog.txt

Исправлено задание cron:

# m h  dom mon dow   command
* * * * * export DISPLAY=:0 && /home/localuser1/autoquit.sh >> /home/localuser1/script_output.txt 2>&1
0
28.01.2020, 04:45

Теги

Похожие вопросы