В этом посте расскажу, как можно написать скрипт, который автоматически восстанавливает соединение с интернетом.
Создадим файл в директории, из которой при старте системы будем запускать скрипт:
cd /etc/init.dsudo 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
Полностью скопипастено с сайта
Маленькие программы и утилиты, автор - я.
ЗЫ: сильно строго не судите - мой первый скрипт.