Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок
Модераторы: vadim64, terminus
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
lazhu
- сержант
- Сообщения: 254
- Зарегистрирован: 2013-08-10 14:28:38
-
Контактная информация:
Непрочитанное сообщение
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`;
}
все равно не понятно, зачем столько писанины
lazhu
-
Хостинг HostFood.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
- Откуда: Иркутск
-
Контактная информация:
Непрочитанное сообщение
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>';
?>
У меня в скрипт добавлены графики, но тут я не выкладываю код для них ... так как еще "сыровато"

-
Вложения
-

Числа не управляют миром, но могут показать как управляется мир
tray.irk
-
tray.irk
- сержант
- Сообщения: 266
- Зарегистрирован: 2008-10-22 8:21:36
- Откуда: Иркутск
-
Контактная информация:
Непрочитанное сообщение
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
Числа не управляют миром, но могут показать как управляется мир
tray.irk