Скрипт пинга

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

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

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
lazhu
сержант
Сообщения: 216
Зарегистрирован: 2013-08-10 14:28:38
Контактная информация:

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

Непрочитанное сообщение lazhu » 2013-11-01 10:52:47

gumeniuc писал(а):Lazhu,

Браво, а теперь прочтите что писал ТС.
ок,

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

#!/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"){
   if (-e /tmp/mail0) {
      `echo 'Host is up' | /usr/sbin/sendmail -s 'Subject' smbd@smwr.com`;
      `rm /tmp/mail0`;
      exit;
   }
   else {
      exit;
   }
}
else {
   `echo 'Host is down' | /usr/sbin/sendmail -s 'Subject' smbd@smwr.com`;
   `touch /tmp/mail0`;
}
все равно не понятно, зачем столько писанины

Хостинговая компания 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/

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

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

Непрочитанное сообщение tray.irk » 2014-01-13 6:48:20

Модернизировал скрипт под базу мускуля с красивым выводом ...

Название БД: monitoring
Название Таблицы: log
Столбцы: date, server, ping

Логин: root
Пароль: pass

Сам скрипт, по крону каждую минуту ...

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

#!/bin/sh

D=`date '+%Y-%m-%d %H:%M'`;

cat /usr/local/etc/scripts/list.txt | while read list
do

#echo $list

if [ $(/sbin/ping -q -c1 $list | grep loss | cut -d " " -f7) == "0.0%" ]
then
ping_result="1"
else
ping_result="0"'
fi

mysql=`echo "select ping from log where server='$list' order by date desc limit 0,1" | /usr/local/bin/mysql -u root --password=pass monitoring | awk 'NR==2'`
#echo $mysql

if [ "$mysql" != "1" ]
then

        if [ "$ping_result" == "1" ]
        then
        echo $list "ping_result=" $ping_result
        /usr/local/bin/mysql -u root --password=password -D monitoring -e "insert into log (date,server,ping) values('$D','$list','$ping_result');"
        else
        echo 'NET PINGA DO HOSTA!'
        fi
fi

done

Файл /usr/local/etc/scripts/list.txt со списком хостов которые нам нужно пинговать

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

10.239.5.204
10.239.5.203
10.239.5.207
10.239.5.241
10.239.5.240
172.16.5.200
Форма вывода на PHP

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

<?php
include('mysql.php');





print '<center><table width=50%><tr><td><center><h2>Статистика доступности серверов</h2></center></td></tr></table></center>';



$per_page=30;
if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0;
$start=abs($page*$per_page);


print '<center><table width=50% border=0>';

$q="SELECT * FROM `log` ORDER BY date DESC LIMIT $start,$per_page";
$res=mysql_query($q);
while($row=mysql_fetch_array($res)) {

if ($temp != $row['date']) {print '<tr><td colspan=2><HR></td></tr>';}

$start=$start+1; 
  if ($row['ping'] == "1")
  {
  print '<tr bgcolor="#00FF00">';
  }
  else
  {
  print '<tr bgcolor="#FF0000">';
  }
  
  print '<td align="center">'.$row['date'].'</td><td align="center">'.$row['server'].' ('.exec('nslookup '.$row["server"].' | grep name | awk \'{print $4}\'').')</td></tr>';
  $temp=$row['date'];
  
}

print '</table></center>';




$q="SELECT count(*) FROM `log`";
$res=mysql_query($q);
$row=mysql_fetch_row($res);
$total_rows=$row[0];

$num_pages=ceil($total_rows/$per_page);

print '<center><table width=50%><tr><td><HR></td></tr><tr><td> Страницы: ';
for($i=1;$i<=$num_pages;$i++) {
  if ($i-1 == $page) {
    echo $i." ";
  } else {
	
    echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i."</a> ";
  
  }
}
print '</td></tr></table></center>';
print '<center><table width=50%><tr><td><HR></td></tr><tr><td>Всего записей в БД: '.$total_rows.' (c) Kozlov Dmitry 2014</td></tr></table></center>';

?>
У меня в скрипт добавлены графики, но тут я не выкладываю код для них ... так как еще "сыровато" :)
Вложения
Снимок.JPG
Числа не управляют миром, но могут показать как управляется мир

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

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

Непрочитанное сообщение tray.irk » 2014-01-14 11:24:27

Выкладываю исправленный скрипт!!!! Предыдущий с багом

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

#!/bin/sh

D=`date '+%Y-%m-%d %H:%M'`;

cat /usr/local/etc/scripts/list.txt | while read list
do

if [ $(/sbin/ping -q -c1 $list | grep loss | cut -d " " -f7) == "0.0%" ]
then
ping_result="1"
else
ping_result="0"
fi

mysql=`echo "select ping from log where server='$list' order by date desc limit 0,1" | /usr/local/bin/mysql -u root --password=pass monitoring | awk 'NR==2'`

if [ "$mysql" == "0" -o "$mysql" == "1" ]
then

if [ "$mysql" == "0" ]
then
        if [ "$ping_result" == "1" ]
        then
       echo 'POIAVILSA PING -> DOBAVILI V BAZU'
       /usr/local/bin/mysql -u root --password=pass -D monitoring -e "insert into log (date,server,ping) values('$D','$list','$ping_result');"
        fi
fi


if [ "$mysql" == "1" ]
then
        if [ "$ping_result" == "0" ]
        then
        echo 'NET PINGA DO HOSTA!'
       /usr/local/bin/mysql -u root --password=pass -D monitoring -e "insert into log (date,server,ping) values('$D','$list','$ping_result');"
        fi
fi

else
echo "DOBAVLIAEM V BAZU"
/usr/local/bin/mysql -u root --password=pass -D monitoring -e "insert into log (date,server,ping) values('$D','$list','$ping_result');"
fi



done

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