Вторник, 05.11.2024
TiM
Меню сайта
Категории раздела
Мои статьи [9]
1С Бухгалтерия [1]
Arduino / ATMEGA [10]
ESP8266 [1]
OrangePi PC и Raspberry Pi 2 Model B V1.1 [4]
Шаговые двигатели [1]
PHPProBid [0]
CMS DLE (DataLife Engine) [0]
CMS Joomla [13]
SugarCRM [5]
Базы данных [5]
PHP скрипты [16]
Bash и скрипты [27]
IP АТС Elastix / Asterisk [12]
CentOS [6]
Debian [8]
Lubuntu / LinuxMINT [29]
Windows [28]
Умный дом [1]
Сервера [16]
Natural Selection [1]
System Shock 2 [1]
Форма входа
Главная » Статьи » Bash и скрипты

Скрипт для автореконнекта к интернету

Были ситуации когда интернет как бы «зависал», но при этом соединение не отваливалось. Пришлось немного помучится и в итоге появился на свет скрипт для автоматической проверки наличия соединения и его переподключения в случае отсутствия доступа в инет.

Далее следует код bash скрипта, который следует запихать в cron на проверку через n-ое кол-во минут/секунд. Пояснения к скрипту в конце.
 

#!/bin/bash

TESTHOST="8.8.8.8"
LOGFILE="/var/log/inettest.log"

ping -c 1 -w 5 $TESTHOST &>/dev/null

if [ $? -ne 0 ]
then
        read LOG < $LOGFILE
        if [ $LOG = 0 ]
        then
                # if  not active then write '1' in logfile
                cat /dev/null > $LOGFILE
                echo 1 > $LOGFILE
        fi
        if [ $LOG = 1 ]
        then
                # if not active then write '2' in logfile
                cat /dev/null > $LOGFILE
                echo 2 > $LOGFILE
        fi
        if [ $LOG = 2 ]
        then
                # if not active then stoping pppoe connection and starting new connection
                # <your command for restart internet connections>
                # example:
                #/etc/init.d/networking restart

                cat /dev/null > $LOGFILE
                echo 0 > $LOGFILE
        fi
else
        cat /dev/null > $LOGFILE
        echo 0 > $LOGFILE
fi



Смысл скрипта в следующем:
1. Устанавливаем хост, который будем пинговать (я выбрал 8.8.8.8 — гуглоDNS как один из самых стабильных), а так же местоположение лог файла с данными проверки.
2. Пингуем хост
3. Далее мы выполняем проверку на то, что же в нашем log файле.
Если 0, то предыдущая проверка инета была удачной.
Если 1, то предыдущая проверка инета была неудачной.
Если 2, то это уже вторая проверка и инет все еще не работает, а значит рестартим pppoe или вообще всю сеть (для прямых линков по ethernet) и обнуляем.

Вот в принципе и всё. Данная реализация не претендует на образцовость и сделана для облегчения жизни домашнего сервера с не очень хорошим инетом. Возможностей для модификаций множество, а так же и решений данной проблемы. Мне же хватило этого.

Если кому-то пригодится, то это будет просто отлично :)

Скрипт размещен в публичном репозитории на GitHub: inet_checker

Категория: Bash и скрипты | Добавил: Timofey (10.03.2016)
Просмотров: 922
Поиск
Статистика

Онлайн всего: 3
Гостей: 3
Пользователей: 0
YANDEX
Яндекс.Метрика
Сайты
  • Харьковский Юридический Альянс
  • Оцифровка кинопленки
  • TiM ©
    Харьков 2024