1 (21.06.2012 08:02:38 отредактировано semperN)

Есть скрипт для поднятия pptp. Вот так он выглядит:

#!/bin/sh

host="8.8.8.8";
num=3

ping -c $num $host > /dev/null 2>&1

if [ $? != 0 ]; then
   echo `date` ':  Перезагрузка инета'  >> /var/log/ppp/nktv.log
   /usr/bin/killall -9 pppd
   sleep 5
   ifdown eth1
   sleep 10
   ifup eth1
   sleep 10
   pppd call nktv
   sleep 10
   ip r d default
   sleep 5
   ip r a default dev ppp0
        if [ $? = 0 ]; then
      echo `date` check_net >> /var/log/check_net.log
   else
           echo `date`" Автоматическое восстановление связи не удалось" >> /var/log/ppp/nktv.log
        fi
fi

Этот скрипт я добавил под пользователем root командой crontab.

crontab -l
0-59 *  *  *  * /etc/ppp/callvpn

И он действительно запускается каждую минуту видно с помощью ps -e | grep calllvpn
Но этот скрипт не может поднять pppd если его запускает cron.
Если я запущу его сам ./callvpn то он выполняется нормально и поднимает интерфейс.
В чем причина подскажите пожалуйста.

2 (21.06.2012 08:08:51 отредактировано Fat-Zer)

добавь как sh -x /etc/ppp/callvpn 2>&1 >>"/tmp/callvpn-log" и кури то, что получилось.

95% процентов проблем находятся между клавиатурой и стулом.

3

semperN пишет:

В чем причина подскажите пожалуйста.

Причина в том, что для крона и для юзера по разному настроено окружение (PATH). И половина твоих программ просто не находятся. Надо в скрипте или свой PATH устанавливать, или вызывать программы по полному пути.

4

Fat-Zer пишет:

добавь как sh -x /etc/ppp/callvpn 2>&1 >>"/tmp/callvpn-log" и кури то, что получилось.

сделал но в этом файле все пусто

5

Cruiser78 пишет:
semperN пишет:

В чем причина подскажите пожалуйста.

Причина в том, что для крона и для юзера по разному настроено окружение (PATH). И половина твоих программ просто не находятся. Надо в скрипте или свой PATH устанавливать, или вызывать программы по полному пути.

но крон же запускает сам скрипт и логи пишет с этого скрипта.

6

semperN пишет:

сделал но в этом файле все пусто

не знаю особенностей перенаправления потоков в sh и кроне, так что чтобы наверняка:

1. создаёшь файл /tmp/debug.sh

#!/bin/sh
LOG_FILE="/tmp/callvpn-$(date +%H:%M).log"
sh -x /etc/ppp/callvpn 2>>$LOG_FILE >>$LOG_FILE

2. добавляешь его в крон
3. куришь
4. ???????????
5. PROFIT!

95% процентов проблем находятся между клавиатурой и стулом.

7

Тему можно закрывать.
В скрипте поменял #/bin/sh на #/bin/bash
и в /etc/crontab написал

0-59 *  *  *  * root /etc/ppp/callvpn

И все работает