Поднятие соединения с интернетом в случае падения

Рубрика: Linux
Четверг, 20 мая 2010 г.
Просмотров: 5717
Подписаться на комментарии по RSS

В этой статье расскажу Вам, как написать скрипт, который автоматически восстанавливает соединение с интернетом.

Создадим файл в директории, из которой при старте системы будем запускать скрипт:

cd /etc/init.d
sudo touch check_internet

Теперь дадим права на запуск:

sudo chmod +x check_internet

Перейдем непосредственно к написанию скрипта. Откроем gedit (можете открыть nano или любой удобный для Вас текстовый редактор):

sudo gedit check_install

Итак, файл мы открыли. Перейдем непосредственно к написанию скрипта:

#!/bin/bash
#Строка выше - путь к интерпретатору. В Ubuntu и во многих дистрибутивах именно так.
#Создаем переменную
DATE=$(date +%F)
#Указываем путь к файлу, в котором будет отображаться, в какое время не было интернета (некая статистика для провайдера ;) )
path=/var/log
name=check_internet
log=$path/$name/$name.log
#Создаем папку назначения.
cd $path
mkdir -p $name
#Если файл лога не был создан, то создаем, а если был, то копируем из него содержимое и вставляем в другой файл. Логи будут вестись по дням.
if [ ! -e "$log" ]
then
    touch $log
else
    cat $log >> $log.$DATE
    rm -f $log
    touch $log
fi
while true
do
#Если пинг проходит, то выводится сообщение (его будет видно, если запустить скрипт из терминала)...
if eval "ping -c 1 www.google.com"; then
    echo "Интернет работает!"
#...а если нет, то делаем паузу 10 сек, затем еще пинг (вдруг пакет случайно потерялся в прошлый раз)
else
    sleep 10
    if eval "ping -c 1 www.google.com"; then
        echo "Интернет работает!"
    else
#Перезапускаем интернет соединение. У меня установлен xl2tpd, поэтому я и перезапускаю нижеуказанный демон. У кого-то может строка отличаться, например, может быть "/etc/init.d/networks restart"
         /etc/init.d/xl2tpd restart
TIME=$(date +%D-%T)
        #Запишем в лог, когда был разрыв соединения
echo $TIME: переподключаемся...>>$log
    fi
fi
#делаем паузу в 60 сек - нет необходимости слишком часто запускать скрипт
sleep 60
done

С написанием скрипта мы закончили. Теперь попросим систему запускать скрипт при старте:

sudo gedit /etc/rc.local

Добавляем перед "exit 0" строку:

/etc/init.d/check_internet

Готово! Осталось перезапустить систему или вручную запустить скрипт:

sh /etc/init.d/check_internet

Федосеев Александр

Комментариев: 5

  1. 2010-05-24 в 15:27:31 | Александр
    ]>]>

    Скрипт существенно доработан.

  2. 2010-06-06 в 13:46:19 | Far East

    Приведите пожалуйста скрипт без комментариев. Такой какой он должен быть, а то я запутался. Опыт в таких делах нулевой.

  3. 2010-06-06 в 14:01:14 | Александр
    ]>]>

    Far East, комментарии не мешают работе скрипта, но, если Вы настаиваете, то вот:

    Показать...

  4. 2010-06-06 в 14:11:46 | Far East

    Спасибо. Некоторые символы я не напечатал. Теперь исправлю.smile

  5. 2011-06-11 в 15:11:58 | Комментатор 157
    ]>]>

    переустановила винду теперь интернет не открывает пишет ошибка, удаленый сервис не может быть найден, токо агент работает что делать=((((

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

(обязательно)

Этот домен продается на telderi