Не так давно мой товарищ начал жаловаться что у него как то не правильно работает уже существующий скрипт переконекта к инету.

Ну зашел я к нему на консоль и смотрю:

# ifconfig
........
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1498
inet **.**.**.** --> **.**.**.** netmask 0xffffffff
Opened by PID 74019
tun1: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
Opened by PID 77092

О, думаю — знакомый прикол, полез смотреть на этот самый скрипт:

# cd /usr/local/etc
# cat reconnect.sh
#!/bin/sh
if ping -c 3 ya.ru >> /dev/null 
then 
exit 0 
else 
killall ppp
sleep 55
killall ppp
sleep 45
ppp -ddial PROVIDER
fi

Я решил его немного «универсировать». Потому как получилось вот что — из-за того что он отрабатывает почти минуту со слипами, а крон каждые 2 минуты, то каким-то образом они пересеклись.

И вот, я решил использовать while, так вот что из этого получилось:

# cat reconnect.sh
#!/bin/sh
if ping -c 3 ya.ru >> /dev/null 
then 
exit 0 
else
/bin/date >> /var/log/reconnect.log
echo 'killing pptp' >> /var/log/reconnect.log
while test `/sbin/ifconfig tun0 | /usr/bin/grep inet | /usr/bin/awk '{print $2}'`
do
killall ppp;
done
sleep 2
    if test `ps ax | grep 'ppp -ddial' | awk '{print $6}'`
     then
      killall ppp;
      sleep 2
      echo 'stoped pptp' >> /var/log/reconnect.log
     else
    ppp -ddial PROVIDER
    echo 'started pptp' >> /var/log/reconnect.log
    fi
fi


# touch /var/log/reconnect.log

Тем самым ускоряя процесс ре коннекта. В результате получилось что килятся ppp будет до тех пор — пока активен интерфейс tun0, а как только его нет, пару секунд ждем и стартуем ppp.
Кроме того, добавил логирование реконектов 🙂

С первой минуты скрипт начал правильно работать — разумеется предварительно я его протестил не один раз.

В кроне я перепроверил что бы стояло 2 минуты.. Этого с головой предостаточно.

Напоминаю всем копирующим мой контент о существовании закона "Об авторском праве".
В связи с этим, прошу во избежании конфликтов при копировании данного материала, ставить на него ссылку:

http://noted.org.ua/?p=1214


Также, вы можете отблагодарить меня переслав любую сумму на любой кошелек WebMoney, для поддержания данного ресурса. Или просто админу на пиво ;)

Кошельки для получения благодарности:
R386985788805
U234140473141
Z147712360455

На данной странице нет комментариев, возможно они закрыты. Если Вы хотите оставить свой комментарий, перейдите на специально созданный раздел

Add your comment now

You must be logged in to post a comment.