Скрипт пинга

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Скрипт пинга

Непрочитанное сообщение tray.irk » 2013-09-05 8:13:16

Уважаемы гуру ... подскажите как сделать скрипт которые бы пинговал хосты определенные и если нет пинга то отправлял бы сообщение?

Я навоял следующий скриптик:

Код: Выделить всё

ping -c1 -q 10.239.1.103 > /dev/null || echo 'NO PING TO DB' | mail -s 'Ping' 7950******@sms.bwc.ru
ping -c1 -q 10.239.1.104 > /dev/null || echo 'NO PING TO TAD' | mail -s 'Ping' 7950******@sms.bwc.ru
Поставил его в крон каждые 5 минут ... но как сами уже догодались при отсутствии пинга ... каждые 5 минут и будут идти сообщения ... как от этого избавиться? и что бы пришло сообщение что пинга нет до хоста ... а следующая пришла бы уже что хост включился?
Числа не управляют миром, но могут показать как управляется мир

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

Re: Скрипт пинга

Непрочитанное сообщение gumeniuc » 2013-09-05 8:34:59

надо обозначить какой-либо "флаг", который укажет был отправлен email или нет.
Да шо ему сделается...

Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Re: Скрипт пинга

Непрочитанное сообщение tray.irk » 2013-09-05 8:47:12

как это сделать? :)
Числа не управляют миром, но могут показать как управляется мир

Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Re: Скрипт пинга

Непрочитанное сообщение tray.irk » 2013-09-05 8:52:50

Была мысля записывать эти самые "флаги" в файл ... и потом считывать его ... но как правильно это реализовать не знаю ((((

вот сей бред:

Код: Выделить всё

#!/bin/sh
vars=`cat /usr/local/etc/scripts/log.txt`
for i in $vars; do eval $i; done

if [ "$db" == "no" ]
then

ping -q -c5 10.239.1.103 > /dev/null
if [ $? -eq 0 ]
then
echo 'PING TO DB -- OK' | mail -s 'Ping' 7950******@sms.bwc.ru
[b]// по идеи тут должена очищаться только определенная переменная, иначе при большом количестве хостов будет глюк[/b]
[b]cat /dev/null > /usr/local/etc/scripts/log.txt[/b]
fi

else
ping -c1 -q 10.239.1.103 > /dev/null || echo 'PING TO DB -- NO' | mail -s 'Ping' 7950******@sms.bwc.ru
db="db=no"
fi



echo $db >> /usr/local/etc/scripts/log.txt

Часть скрипта не работает ... так как плохо знаком с программированием на Shell
Последний раз редактировалось tray.irk 2013-09-05 8:57:36, всего редактировалось 1 раз.
Числа не управляют миром, но могут показать как управляется мир

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

Re: Скрипт пинга

Непрочитанное сообщение gumeniuc » 2013-09-05 8:56:35

не самый оптимизированный пример:

создать файл, например /бла-бла-бла/10.239.1.104.flag, где хранить 0 или 1, в зависимости от того, было отправлено письмо или нет

логика скрипта примерно следующая:

if (ping failed)
then
if ( flag = 0 )
then
send email; set flag =1
fi
else
set flag = 0
fi
Да шо ему сделается...

Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Re: Скрипт пинга

Непрочитанное сообщение tray.irk » 2013-09-05 9:12:04

структуру то я понимаю как должно быть ))) с кодом плохо у меня (((
Числа не управляют миром, но могут показать как управляется мир

werder31
сержант
Сообщения: 217
Зарегистрирован: 2009-12-22 10:48:41
Откуда: from Ukraine
Контактная информация:

Re: Скрипт пинга

Непрочитанное сообщение werder31 » 2013-09-05 9:45:11

Код: Выделить всё

/sbin/ping -q -c 5 -t 5 8.8.8.8 || /etc/sms.sh

sms.sh:

Код: Выделить всё

sendEmail -f from_mail@gmail.com -t to_mail@mail.ru -o message-charset=utf-8 -u "Photos..." -m "Тут идет небольшое тело письма..." -s smtp.gmail.com -xu from_mail@gmail.com -xp PASSWORD -l log_file.txt -a photo_1.jpeg photo_2.jpeg
SendEmail - софт небольшой перловый скрипт, ставить отдельно
Любите жизнь, ведь она все равно отымеет..так хоть по любви!

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

Re: Скрипт пинга

Непрочитанное сообщение gumeniuc » 2013-09-05 10:29:35

Попробуйте как-то так

Код: Выделить всё

#!/bin/sh

dir=/usr/home/ssh/

cat $dir/hosts | while read list
do
        if [ $(ping -q -c1 $list | grep loss | cut -d " " -f7) == "0.0%" ]
        then
                echo 0 > $dir/$list.flag
        else
                if [ $(cat $dir/$list.flag) == "0" ]
                then
                        echo "Sending email" ping errors with $list
                        echo 1 > $dir/$list.flag
                fi
        fi
done

Да шо ему сделается...

Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Re: Скрипт пинга

Непрочитанное сообщение tray.irk » 2013-09-05 16:39:24

Какое будет содержание файла hosts?
Числа не управляют миром, но могут показать как управляется мир

Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Re: Скрипт пинга

Непрочитанное сообщение tray.irk » 2013-09-05 16:44:32

По поводу sendemail ... не совсем понял ... он просто будет отправлять ... а проверок я не вижу ...
Числа не управляют миром, но могут показать как управляется мир

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

Re: Скрипт пинга

Непрочитанное сообщение gumeniuc » 2013-09-05 16:56:41

tray.irk писал(а):Какое будет содержание файла hosts?
список хостов

192.168.20.23
10.0.0.1

и тд

ну и под каждый хост соответственно свой файл и "флагом"
Да шо ему сделается...

Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Re: Скрипт пинга

Непрочитанное сообщение tray.irk » 2013-09-06 2:59:32

не работает так ((( ругается ...

Код: Выделить всё

[: ==: unexpected operator
Числа не управляют миром, но могут показать как управляется мир

Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Re: Скрипт пинга

Непрочитанное сообщение tray.irk » 2013-09-06 3:05:53

Да и таким макаром файлы с флагами засруться быстро .... так как очистки нет предыдущего значения ...
Числа не управляют миром, но могут показать как управляется мир

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

Re: Скрипт пинга

Непрочитанное сообщение gumeniuc » 2013-09-06 8:05:11

показывайте hosts файл
tray.irk писал(а):Да и таким макаром файлы с флагами засруться быстро .... так как очистки нет предыдущего значения ...
код внимательно смотрели ? что значит засрутся ?!
Да шо ему сделается...

Гость
проходил мимо

Re: Скрипт пинга

Непрочитанное сообщение Гость » 2013-09-06 16:12:51

Посмотрите ещё Net::Ping. Для отправки писем можно использовать smtp-cli.

Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Re: Скрипт пинга

Непрочитанное сообщение tray.irk » 2013-09-09 3:00:53

Код: Выделить всё

root@backup:/usr/local/etc/scripts # cat hosts
10.239.1.103
10.239.24.1
10.239.14.1

Код: Выделить всё

root@backup:/usr/local/etc/scripts # cat 1.sh
#!/bin/sh

dir=/usr/local/etc/scripts/

cat $dir/hosts | while read list
do
        if [ $(ping -q -c1 $list | grep loss | cut -d " " -f7) == "0.0%" ]
        then
                echo 0 > $dir/$list.flag
        else
                if [ $(cat $dir/$list.flag) == "0" ]
                then
                        echo "Sending email" ping errors with $list
                        echo 1 > $dir/$list.flag
                fi
        fi
done

Все файлы с флагами есть ... если есть пинги до хостов то все нормально ... если нет до одного хотя бы ... то выдает следующее:

Код: Выделить всё

[: ==: unexpected operator]
Числа не управляют миром, но могут показать как управляется мир

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

Re: Скрипт пинга

Непрочитанное сообщение gumeniuc » 2013-09-09 11:35:50

весьма странно, у меня всё работает. одно НО - в файле хостс не должно быть пустых строк.
ну а если тупит именно на отсутствии пинга, добавьте алерт и посмотрите где заваливается.
Да шо ему сделается...

Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Re: Скрипт пинга

Непрочитанное сообщение tray.irk » 2013-09-10 2:24:48

пустых строк нет ... что за алерт?
Числа не управляют миром, но могут показать как управляется мир

Аватара пользователя
tray.irk
сержант
Сообщения: 266
Зарегистрирован: 2008-10-22 8:21:36
Откуда: Иркутск
Контактная информация:

Re: Скрипт пинга

Непрочитанное сообщение tray.irk » 2013-09-10 5:25:04

Заработало :) скрипт следующий:

Код: Выделить всё

#!/bin/sh

dir=/usr/local/etc/scripts/


cat $dir/hosts | while read list
do

        if [ $(ping -q -c1 $list | grep loss | cut -d " " -f7) == "0.0%" ]
        then


                if [ "$(cat $dir/$list.flag)" == "1" ]
                then
                        echo 'OK PING TO '$list'' | mail -s 'Ping' 7********@sms.bwc.ru
                        echo 'OK PING TO '$list'' | mail -s 'Ping' 7********@sms.bwc.ru
                        echo 0 > $dir/$list.flag
                else
                        echo 0 > $dir/$list.flag
                fi



       else

                if [ "$(cat $dir/$list.flag)" == "0" ]
                then
                        echo 'ERROR PING TO '$list'' | mail -s 'Ping' 7********@sms.bwc.ru
                        echo 'ERROR PING TO '$list'' | mail -s 'Ping' 7********@sms.bwc.ru
                        echo 1 > $dir/$list.flag
                fi
        fi
done

и в крон каждую минуту :)
Числа не управляют миром, но могут показать как управляется мир

Аватара пользователя
Spook1680
лейтенант
Сообщения: 996
Зарегистрирован: 2009-07-28 12:26:09

Re: Скрипт пинга

Непрочитанное сообщение Spook1680 » 2013-10-30 16:12:01

tray.irk писал(а):Заработало :) скрипт следующий:

Код: Выделить всё

#!/bin/sh

dir=/usr/local/etc/scripts/


cat $dir/hosts | while read list
do

        if [ $(ping -q -c1 $list | grep loss | cut -d " " -f7) == "0.0%" ]
        then


                if [ "$(cat $dir/$list.flag)" == "1" ]
                then
                        echo 'OK PING TO '$list'' | mail -s 'Ping' 7********@sms.bwc.ru
                        echo 'OK PING TO '$list'' | mail -s 'Ping' 7********@sms.bwc.ru
                        echo 0 > $dir/$list.flag
                else
                        echo 0 > $dir/$list.flag
                fi



       else

                if [ "$(cat $dir/$list.flag)" == "0" ]
                then
                        echo 'ERROR PING TO '$list'' | mail -s 'Ping' 7********@sms.bwc.ru
                        echo 'ERROR PING TO '$list'' | mail -s 'Ping' 7********@sms.bwc.ru
                        echo 1 > $dir/$list.flag
                fi
        fi
done

и в крон каждую минуту :)
А мож подсказать запускаю а в ответ тишина
не приходит на почту
ручками если запустить в ком. строке

Код: Выделить всё

echo OK PING TO | mail -s 'Ping' vasa.pupkin@yandex.ru
то письмо приходит
"Гента вообще форкLFS в свою очередь мутант Скалвари
которая BSD с ядром Линя BSD - мутировал-AT&T UNIX
а там был UNICS - MULTICS, счёты, глиняные таблички, палочки,
большой взрыв, сингулярность, пиз...ц. Вывод: RedHat использует пиз..ц. "

Аватара пользователя
burder
сержант
Сообщения: 154
Зарегистрирован: 2007-12-19 13:18:18

Re: Скрипт пинга

Непрочитанное сообщение burder » 2013-10-31 14:56:28

поставить apinger и не мучаться
-=-

werder31
сержант
Сообщения: 217
Зарегистрирован: 2009-12-22 10:48:41
Откуда: from Ukraine
Контактная информация:

Re: Скрипт пинга

Непрочитанное сообщение werder31 » 2013-10-31 17:21:02

в скрипте прописывайте полные пути и будет счастье!
Любите жизнь, ведь она все равно отымеет..так хоть по любви!

Аватара пользователя
Spook1680
лейтенант
Сообщения: 996
Зарегистрирован: 2009-07-28 12:26:09

Re: Скрипт пинга

Непрочитанное сообщение Spook1680 » 2013-10-31 20:33:24

werder31 писал(а):в скрипте прописывайте полные пути и будет счастье!
Ок., заюзаю. спсибки.
"Гента вообще форкLFS в свою очередь мутант Скалвари
которая BSD с ядром Линя BSD - мутировал-AT&T UNIX
а там был UNICS - MULTICS, счёты, глиняные таблички, палочки,
большой взрыв, сингулярность, пиз...ц. Вывод: RedHat использует пиз..ц. "

lazhu
сержант
Сообщения: 254
Зарегистрирован: 2013-08-10 14:28:38
Контактная информация:

Re: Скрипт пинга

Непрочитанное сообщение lazhu » 2013-10-31 22:08:32

Какие сложности!

Код: Выделить всё

#!/usr/local/bin/perl
my $ping = `/sbin/ping -c 1 -t timeout  i.p.ad.dr | grep '1 packets received' | wc -l`;
if ($ping eq "1\n"){
	exit;
}
else {
	`echo $ping | /usr/sbin/sendmail -s 'Subject' smbd@smwr.com`;
}

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

Re: Скрипт пинга

Непрочитанное сообщение gumeniuc » 2013-11-01 9:02:02

Lazhu,

Браво, а теперь прочтите что писал ТС.
Да шо ему сделается...