Простой скрипт проверки доступности хоста

На изображении три команды скрипта (dig, ping, notify-send) работают как одно целое


Всем привет ! Предлагаю вашему вниманию скрипт проверки доступности хоста.  Скрипт можно запускать из консоли или используя Cron. При запуске, скрипт сначала проверяет доступен ли Интернет, используя при этом команду DIG, если интернет доступен (а если нет - появится  всплывающее сообщение) - запускается команда PING, которая и проверяет доступность хоста. По результату вы получите соответствующее  сообщение. Каждое сообщение снабжено визуально понятной иконкой.
А вот и собственно код самого скрипта:

#!/bin/bash

#Функция посылает ping запрос к хосту указанному в переменной mhost
function loadres(){

#Необходимый адрес хоста можно указать прямо в командной строке в качестве аргумента в виде: myscript myhost.com
if [ -n "$1" ]
then
mhost=$1
else
#Вместо "mysite.com" укажите адрес необходимого хоста
mhost="mysite.com"
fi

if ping -c1 "$mhost" &> /dev/null
then
#Вместо "$HOME/*/live-host/" укажите свой (правильный) путь к иконкам. Без иконок скрипт тоже будет правильно работать.
notify-send -i $HOME/*/live-host/img/gdu-smart-healthy.png "Ваш хост $mhost" "Отвечает на запросы"
elif (exec 3</dev/tcp/"$mhost"/80) 2>/dev/null
then
notify-send -i $HOME/*/live-host/img/gdu-smart-healthy.png "Ваш хост $mhost" "Отвечает на запросы"
(exec 3<&~) 2>/dev/null
else
notify-send -i $HOME/*/live-host/img/gdu-smart-failing.png "Ваш хост $mhost" "Не отвечает на запросы"
fi

unset mhost
}
#Проверяем наличие доступа к сети Интернет
if !(dig google.com | grep REFUSED &>/dev/null)
then

loadres $1
elif (exec 4</dev/tcp/google.com/80) 2>/dev/null
then
loadres $1
(exec 4<&~) 2>/dev/null
else
notify-send -i $HOME/*/live-host/img/no-internet-pc.png "Вероятно отсутствует подключение" "К Интернету"
fi


exit $?



Скрипт снабжен понятными комментариями. Адрес хоста можно указывать как в виде привычного набора букв (mysite.com) так и в виде IP адреса (xxx.xxx.xxx.xxx). Для постоянного использования, возможно, будет удобно поместить скрипт в /bin/ (не забудьте убрать расширение у скрипта и дать права на исполнение).
Адрес проверяемого хоста можно жестко прописать в переменной mhost или указывать как аргумент при вызове скрипта, например: lhost habr.com.
Код скрипта так же доступен в моём репозитории на Гитхабе.

P.S. Некоторые скажут, что этот скрипт - это всего лишь очередной велосипед и в какой то мере будут правы. Только мне этот велосипед нравится и собрал его я сам :)
Данный скрипт писался под Ubuntu и правильно работать будет только там. Для адекватной работы в других дистрибутивах его нужно будет переписать.
Благодарю за внимание ! Всем Успеха и Вдохновения !

Комментарии

Популярные сообщения из этого блога

Генератор русских имён и фамилий на Python

Букмарклет для скачивания видео с SaveFrom