PPTP не будет подключаться из команды cron

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

У меня есть удаленный сервер, который использует безопасный VPN-туннель (pptp) для подключения к базе данных за нашим брандмауэром. Это довольно стабильная система (особенно с установленным параметром persistent), и, как правило, работает без проблем. Однако время от времени соединение от нашего интернет-провайдера с нашим офисом прерывается, и это разъединение является достаточно длинным, чтобы препятствовать тому, чтобы VPN-туннель оставался открытым.

Я установил простой сценарий, чтобы определить, доступна ли база данных с брандмауэром через VPN, и, если нет, она пытается открыть 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

Я сохранил скрипт как /root/cron/pptp-monitor и установил права доступа как -rwxr--r-- root root

Скрипт отлично работает при запуске вручную (используя sudo) - но настроенный мной cron не не работают должным образом:

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

Сценарий монитора запускается - я вижу записи журнала каждые 5 минут - но команда pon фактически не срабатывает.

В системном журнале я вижу это каждые 5 минут:

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.

Строки «использующие интерфейс ppp0» для «соединение прервано» повторяются 10 раз перед exit - указывая, что туннель пытается возобновить безуспешно. Примечание: к этому времени сетевое соединение в порядке, и как только я запускаю команду вручную, она подключается с первой попытки.

Что я упустил, что заставляет cron-триггер предотвратить VPN-соединение?

2
задан 17 April 2014 в 03:40

2 ответа

Необходимо объявить PATH переменная в сценариях, впоследствии она будет работать. Наверху файлов (и crontab и сценарий это будет выполняемым):

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0
ответ дан 17 April 2014 в 03:40

Я предпочел бы, выполняет это:

# 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

, Чем выполненный это:

# 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

, поскольку pppd выполнит pptp, но pptp был расположен в '/usr/sbin / ', таким образом, $PATH набора может быть необходимым.

0
ответ дан 17 April 2014 в 14:40
  • 1
    Отправьте это как новый вопрос, таким образом, другие могут помочь Вам. – ptetteh227 29 April 2018 в 06:55

Другие вопросы по тегам:

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