#!/bin/sh
# Какие хосты проверяем (через пробел).
hosts="8.8.8.8 ya.ru www.ru"
# Файл, который будет создаваться, если интернета нет.
offline="/tmp/inetoff"
# Функция проверяет с помощью ping доступность хостов.
# Возвращает 0, если хотя бы один хост доступен.
check_hosts() {
for host in ${hosts}; do
# Запускаем ping с 4-мя запросами
/sbin/ping -c 4 $host > /dev/null 2>&1
if [ $? -eq 0 ]; then
return 0;
fi
done
return 1;
}
# Процедура, которая пишет сообщение
# в /var/log/message с тегом INTERNET.
message() {
/usr/bin/logger -t INTERNET $1
}
check_hosts
# Хотя бы один хост доступен?
if [ $? -eq 0 ]; then
# Флаг отсутствия интернета существует?
if [ -e ${offline} ]; then
# Значит интернет только что появился.
message "Network is up"
# Удаляем флаг отсутствия интернета.
/bin/rm -f ${offline}
fi
else
# Ни один хост не ответил и флага еще нет.
if [ ! -e ${offline} ]; then
# Значит интернет только что пропал.
message "Network is down"
# Создаем флаг отсутствия интернета.
/usr/bin/touch ${offline}
fi
fi
Засовываем вызов скрипта в крон:
# Запускать каждые 5 минут
*/5 * * * * /path_to_script/lancheck.sh
Теперь в /var/log/message видно, когда интернет появился или пропал.