Не так давно мой товарищ начал жаловаться что у него как то не правильно работает уже существующий скрипт переконекта к инету.
Ну зашел я к нему на консоль и смотрю:
# 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 минуты.. Этого с головой предостаточно.
Напоминаю всем копирующим мой контент о существовании закона "Об авторском праве".
В связи с этим, прошу во избежании конфликтов при копировании данного материала, ставить на него ссылку:
Также, вы можете отблагодарить меня переслав любую сумму на любой кошелек WebMoney, для поддержания данного ресурса. Или просто админу на пиво ;)
Кошельки для получения благодарности:
R386985788805
U234140473141
Z147712360455
На данной странице нет комментариев, возможно они закрыты. Если Вы хотите оставить свой комментарий, перейдите на специально созданный раздел