cronjob do Lubuntu; Não é possível executar scripts adicionais ou ver rotas

0

Estou rodando o Lubuntu em uma VM e tentando configurar um script que roda a cada minuto para verificar se a VPN está ativa, caso contrário, liga e desliga tudo. Quando executo o script manualmente, tudo funciona conforme o planejado, mas, quando configurado como um cronjob, ele falha a quase todas as vezes.

Primeiro, ele não pode detectar a tabela de roteamento. Quando executado manualmente, ele pode ver o túnel, mas quando executado como cron, ele falha e tenta sair de tudo.

O segundo é que ele não pode executar a configuração adicional de scripts / programas. Chega ao ponto de 'iniciar vpn' e depois simplesmente para, qualquer saída sempre pára aqui, mas apenas como um cron, rodando manualmente ele inicia o programa vpn.

Eu também não consigo obter a saída para redirecionar para um arquivo, a menos que eu acrescente cada declaração de eco com > > /home/localuser1/aqlog.txt. Adicionando isso ao comando cron não faz nada.

#!/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"   

Eu também tenho a seguinte configuração no crontab, onde autoquit.sh é o nome arbitrário do script acima:

# m h  dom mon dow   command
* * * * * /home/localuser1/autoquit.sh
    
por HelloWorld3344 30.05.2017 / 03:10

1 resposta

0

Bem, graças a um usuário útil no Reddit eu consegui descobrir isso, então pensei em postar aqui, caso alguém encontre o mesmo obstáculo. O problema é que eu estava tentando iniciar um programa GUI por meio do cron, que não tem var ENV passado, o que significa que não tinha como saber onde exibir. Assim que eu adicionei DISPLAY =: 0 via este fórum útil funcionou exatamente como pretendido e agora inicia os programas.

Código fixo abaixo:

#!/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

Trabalho cron fixo:

# m h  dom mon dow   command
* * * * * export DISPLAY=:0 && /home/localuser1/autoquit.sh >> /home/localuser1/script_output.txt 2>&1
    
por 30.05.2017 / 20:07