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

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

# 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/1214


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

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

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

Add your comment now

Please note: JavaScript is required to post comments.