Проблема с запуском VPN коннекта из скрипта

Аватар пользователя Bulson

В интернет выхожу через vpn соединение. У меня настроено таким образом, что при включении шлюза (это ящик на базе Celeron 433, без клавы и монитора; управление через терминал) автоматом создавалось vpn соединение, и пока шлюз в работе - есть выход в интернет. Последнее время соединение самопроизвольно стало обрываться, подозреваю в этом своего провайдера (видимо сказывается малый размер пула внешних адресов, а может и что-то другое?), таким образом назрела необходимость автоматического рестарта соединения с помощью crond, руками конечно тоже можно, но вот если чего-нибудь качать большое, то ручной пуск не прокатывает.
Забацал скрипт:

!/bin/sh
#Script for up-state vpn connect
#
answer=$(pidof -x pppd)
if [ $answer  ]; then
    echo "vpn state is OK!" >> /var/log/messages
    exit
else
    echo "vpn state is OFF!" >> /var/log/messages
    /usr/sbin/pptp-command start matrix &&  route add default gw 80.70.225.49
    exit
fi

провер - работает! Но когда из командной строки его запускаешь, а когда crond, то нет. В crond я создал задание на запуск этого скрипта каждую минуту, так вот в течении трех минут эта зараза на создавала 3 новых vpn в плюс к тому которое уже существовало. Что делать то? Улыбка

Аватар пользователя AlexRKononoff

Re: Проблема с запуском VPN коннекта из скрипта

Цитата:
провер - работает! Но когда из командной строки его запускаешь, а когда crond, то нет. В crond я создал задание на запуск этого скрипта каждую минуту, так вот в течении трех минут эта зараза насоздавала 3 новых vpn в плюс к тому которое уже существовало. Что делать то?

crond или руками - без разницы. Запустите свой скрипт три(или больше) раза подряд руками - получите ppp2 и.т.д.
Нужно в скипте проверять не сам демон pppd, а VPN. Cвой скрипт могу показать вечером, а пока по памяти
У меня примерно так:
...
if [ -e "/var/run/ppp-ppp0.pid" -o -e "/var/run/ppp0.pid" ]
then #значит есть VPN на ppp0
...
echo "ppp0 already up"
...
fi

Аватар пользователя IsakovAN

Re: Проблема с запуском VPN коннекта из скрипта

Bulson писал(а):
answer=$(pidof -x pppd)
if [ $answer ]; then

Я бы заменил на
if pgrep pppd; then

Bulson писал(а):
/usr/sbin/pptp-command start matrix && route add default gw 80.70.225.49

И еще, покури на тему nodetach. В pppd такая тема была, может и в pptp есть. Улыбка
Суть в том, что pptp не будет уходить в background и весь скрипт ты сможешь заменить на:
while true; do pptp; done

RSS-материал