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

#!/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 видно, когда интернет появился или пропал.

Добавить комментарий

Ваш e-mail не будет опубликован.