Автор Тема: Ping script  (Прочетена 2414 пъти)

BerkAdmin

  • Участници
  • ***
  • Публикации: 7
    • Профил
Ping script
« -: Jun 16, 2007, 21:58 »
Здравейте, искам да направя скрипт, който да пинг-ва определено IP, и когато IP-то не е на линия машината на която е скрипта да изпраща SMS на определен номер, във който да пише, че IP-то не е на линия в момента, а когато отново се появи на линия да изпраща друг SMS, който да казва, че IP-то отново е на линия. Моля за помощ от по-напредналите във тази насока. Благодаря предварително. '<img'>
Активен

vladi4ko

  • Напреднали
  • *****
  • Публикации: 36
    • Профил
Ping script
« Отговор #1 -: 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
Активен

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Ping script
« Отговор #2 -: 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




Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Проблем относно мрежата - няма ping
Настройка на програми
tryn4o 11 4287 Последна публикация Jun 25, 2004, 03:16
от
ping
Настройка на програми
Hel1Fire 1 2047 Последна публикация Feb 11, 2006, 21:10
от divak
Изпращане на sms при прекъсване на ping
Настройка на програми
borislavvg 2 2785 Последна публикация Jul 17, 2006, 11:49
от
Няма ping
Настройка на програми
rootgz 13 4513 Последна публикация Nov 14, 2006, 07:34
от Dean79
Ping event script
Общ форум
Neoromantic 1 1977 Последна публикация Feb 09, 2010, 17:12
от zeridon