Титла: Ping script
Публикувано от: BerkAdmin в Jun 16, 2007, 21:58
Здравейте, искам да направя скрипт, който да пинг-ва определено IP, и когато IP-то не е на линия машината на която е скрипта да изпраща SMS на определен номер, във който да пише, че IP-то не е на линия в момента, а когато отново се появи на линия да изпраща друг SMS, който да казва, че IP-то отново е на линия. Моля за помощ от по-напредналите във тази насока. Благодаря предварително.
Титла: Ping script
Публикувано от: vladi4ko в Jun 17, 2007, 01:10
може да пробваш с тази програма http://www.kilievich.com/fpinger/или да си напишеш нещо съсвсем просто на баш и да го сложиш в кронтам Примерен код | #!/bin/bash ### EDITVASH TYK #### TARGET_IP="X.X.X.X" TARGET_EMAIL="XXXXXXXXXXXX@sms.mtel.net" ##################### PING_REPLY=`ping -w 4 $TARGET_IP | grep " received"` PACKET_RECEIVED=`echo $PING_REPLY | awk '{print $4}'` PACKET_LOSS=`echo $PING_REPLY | awk '{print $6}'`
if [ ! -e "/tmp/ping_l" ]; then echo "0" > "/tmp/ping_l" fi
if [ ! -e "/tmp/ping_r" ]; then echo "0" > "/tmp/ping_r" fi
if [ $PACKET_RECEIVED -lt "2" ]; then PING_L=`cat /tmp/ping_l | grep "^"` echo `expr $PING_L + 1` > /tmp/ping_l echo "0" > /tmp/ping_r else PING_R=`cat /tmp/ping_r | grep "^"` echo `expr $PING_R + 1` > /tmp/ping_r echo "0" > /tmp/ping_l fi
PING_L=`cat /tmp/ping_l | grep "^"` PING_R=`cat /tmp/ping_r | grep "^"` if [ $PING_L == 1 ] && [ $PING_R == 0 ]; then #echo "is offline" echo $PACKET_RECEIVED 'received,' $PACKET_LOSS 'packets lost' | mail -s "$TARGET_IP is offline:" $TARGET_EMAIL fi
if [ $PING_L == 0 ] && [ $PING_R == 1 ]; then #echo "is online" echo $PACKET_RECEIVED 'received,' $PACKET_LOSS 'packets lost' | mail -s "$TARGET_IP is online:" $TARGET_EMAIL fi
|
Титла: Ping script
Публикувано от: neter в Jun 17, 2007, 02:55
Аз ще дам за пример и това, което съм си драснал за мен, за да покажа още един вариант на изписване на скрипта, а и за да внеса малко подобрение - случая, когато проверяващия хост няма връзка. Иначе, без тази проверка, когато проверяващия хост загуби връзка, ти би получил смс за загуба и след това за възстановяване на връзката на хоста, който проверяваш, а това не би било вярно. С тази проверка, когато проверяващия хост загуби връзка, ще се създава файл някъде според променливата 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 |
|