Аз ще дам за пример и това, което съм си драснал за мен, за да покажа още един вариант на изписване на скрипта, а и за да внеса малко подобрение - случая, когато проверяващия хост няма връзка. Иначе, без тази проверка, когато проверяващия хост загуби връзка, ти би получил смс за загуба и след това за възстановяване на връзката на хоста, който проверяваш, а това не би било вярно. С тази проверка, когато проверяващия хост загуби връзка, ще се създава файл някъде според променливата no_net_dir с име според променливата no_net_file, а когато връзката на проверяващия се възстанови, този файл ще се премахне и ти ще получиш смс, че се е възстановила връзката на проверяващия, а не на проверения. Та... ето го скрипта
Примерен код |
#!/bin/bash
monitor_host="111.222.333.444" test_host="212.73.129.164" no_net_dir="/home/user/Desktop" no_net_file="Nqma_net" script_dir="/monitor" sms_from="nqkakyv@email.adres" sms_to="359888123456@sms.mtel.net"
########## NE E NUJNO POVECHE REDAKTIRANE ##########
ping -c 1 -w 10 $monitor_host &>/dev/null if [ $? -ne 0 ]; then ping -c 1 -w 2 $test_host &>/dev/null if [ $? -ne 0 ]; then find $no_net |grep $no_net_file &>/dev/null if [ $? -ne 0 ]; then touch $no_net_dir/$no_net_file fi else find $script_dir |grep ping_no &>/dev/null if [ $? -ne 0 ]; then rm $script_dir/ping_yes touch $script_dir/ping_no echo $monitor_host 'is DOWN' | mail -a "From: $sms_from" -t $sms_to fi fi else find $no_net_dir |grep $no_net_file &>/dev/null if [ $? -ne 1 ]; then rm $no_net_dir/$no_net_file echo 'My host is UP' | mail -a "From: $sms_from" -t $sms_to else find $script_dir |grep ping_yes &>/dev/null if [ $? -ne 0 ]; then rm $script_dir/ping_no touch $script_dir/ping_yes echo $monitor_host 'is UP' | mail -a "From: $sms_from" -t $sms_to fi fi fi |