Search
Write a publication
Pull to refresh

Автоматическое переподключение ADSL-соединения в Debian GNU/Linux, Ubuntu

Давно испытывал проблемы из-за периодически отключающегося интернет-соединения в офисе, приходилось не один раз в выходные идти на работу и вручную подключать соединение с интернетом. Наверняка многие знакомы с этой же проблемой, когда подключенное ADSL соединение от провайдера, спустя пару дней перестаёт работать.
Но, благодаря тому, что роль шлюза в сеть интернет у меня выполнял собственный сервер с установленной Ubuntu Server 10.04 LTS, избавиться от этой проблемы было довольно просто, написав небольшой скрипт на bash.

Создаём файл, который и будет содержать код скрипта:
# touch /root/checkping

Далее пишем сам код скрипта:
# nano /root/checkping

#!/bin/bash

if eval "ping -c 1 8.8.8.8"; then
echo "ok"
else
sleep 10
if eval "ping -c 1 8.8.8.8"; then
echo "ok"
else
poff && pon dsl-provider
fi
fi

exit 0


И добавляем задание в планировщик:
# crontab -e

*/10 * * * * /root/checkping

Суть работы скрипта очень проста, раз в 10 минут планировщик запускает скрипт, который пингует заданный нами ip-адрес, либо URL, в данном примере, и в работе у себя, я использовал ip-адрес публичного dns-сервера Google, можно использовать любой другой, например локальный ресурс провайдера, часто им является Яндекс. Далее, если пинг неудачен, скрипт повторно пингует через 10 секунд (как говорится, на всякий случай, потому что качество работы многих провайдеров до сих пор оставляет желать лучшего). Если и на второй раз пинг неудачен, скрипт выполняет команду для отключения и включения демона ppptd.

После того, как я выполнил данные операции на своем сервере, то почти перестал беспокоиться о том, что меня могут неожиданно вызвать в выходные на работу, без человеческого вмешательства он может работать месяцами, надеюсь кому-нибудь пригодится этот мой опыт.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.