PPTP não conectará de um comando cron

2

Estou tentando descobrir por que minha VPN não se conecta quando o comando é iniciado a partir de um script acionado por cron quando o mesmo script e comando funcionam da maneira esperada.

Eu tenho um servidor remoto que usa um túnel VPN seguro (pptp) para se conectar a um banco de dados atrás do nosso firewall. É um sistema bastante estável (especialmente com o conjunto de opções persistent ) e geralmente é executado sem nenhum problema. No entanto, de tempos em tempos, a conexão do nosso ISP para o nosso escritório desaparece, e essa desconexão é longa o suficiente para impedir que o túnel da VPN permaneça aberto.

Eu configurei um script simples para detectar se o banco de dados com firewall ainda está disponível na VPN e, se não, ele tenta reabrir a VPN.

#!/bin/bash

DATE='date'

HOST=10.1.2.1

PING_RESULT='ping -c4 $HOST'
# gets the percentage of lost packets
PING_LOSS='echo $PING_RESULT : | grep -oP '\d+(?=% packet loss)''

echo "$DATE : Loss Result : $PING_LOSS"

# if 100% packet loss on the ping - assume connection lost
if [ "100" -eq "$PING_LOSS" ];
then
        echo "$DATE : Connection Lost"
        pon VPN_TUNNEL
        echo "$DATE : Restarted Connection"
else
        echo "$DATE : Connection OK"
fi

Guardei o script como /root/cron/pptp-monitor e defino as permissões como -rwxr--r-- root root

O script funciona bem quando executado manualmente (usando o sudo) - mas o cron que eu configurei não funciona corretamente:

*/5 *     * * *     root   [ -x /root/cron/pptp-monitor ] && /root/cron/pptp-monitor >> /var/log/pptp-monitor.log 2>&1

O script do monitor é executado - vejo as entradas de log a cada 5 minutos - mas o comando pon não parece disparar.

No syslog, vejo isso a cada 5 minutos:

Apr 17 08:45:01 bombur CRON[774]: (root) CMD (  [ -x /root/cron/pptp-monitor ] && /root/cron/pptp-monitor >> /var/log/pptp-monitor.log 2>&1)
Apr 17 08:45:14 bombur pppd[784]: pppd 2.4.5 started by root, uid 0
Apr 17 08:45:14 bombur pppd[784]: Using interface ppp0
Apr 17 08:45:14 bombur pppd[784]: Connect: ppp0 <--> /dev/pts/0
Apr 17 08:45:14 bombur pppd[784]: Modem hangup
Apr 17 08:45:14 bombur pppd[784]: Connection terminated.

As linhas "usando interface ppp0" para "conexão terminada" são repetidas 10 vezes antes de exit - indicando que o túnel está tentando reabrir sem êxito. Observação - a conexão de rede está correta até o momento e, assim que eu executar o comando manualmente, ele se conectará na primeira tentativa.

O que eu perdi que está causando o gatilho cron para impedir a conexão VPN?

    
por HorusKol 17.04.2014 / 01:40

2 respostas

2

Você precisa declarar a variável PATH em seus scripts, depois ela funcionará. Na parte superior dos arquivos (o crontab e o script que será executado):

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    
por Matei 26.01.2015 / 13:09
0

Eu prefiro executar isto:

# Here we can specify which user do crontab use.
# And, we can change $PATH by edit this file directly

vi /etc/crontab

# I'm using centos, restart cron daemon

service crond restart

Do que executar isto:

# Edit crontab directly, we can't specify the user.
# And I'm not sure changing $PATH is available or not.
# The default value of $PATH may be '/sbin:/bin:/usr/sbin:/usr/bin'

crontab -e

Como o pppd irá rodar o pptp, mas o pptp está localizado em '/ usr / sbin /', então o $ PATH pode ser necessário.

    
por 0xAA55 02.02.2017 / 06:01