Аналог FriendlyPinger на PHP

Скрипты PHP, PERL и т.п. помогающие управлять сетью

Re: Аналог FriendlyPinger на PHP

Сообщение Андрей » 03 июн 2009, 13:19

Чет не проги, а целые комплексы, разве что кофе админу не варят.
Не подходит такое. Мне просто построить схему сети и оповещать меня, если куда-то пинг пропал.
А в этих прогах строятся и графики и сети и т.п. И оповещение по SMTP. :(
Ко всему этому мне не надо вэбморду.

Кажется придется свое писать. Хотя опять же БД задействовать. :(
.ı|ı..ı|ı.
Андрей
местный житель
 
Сообщения: 1028
Зарегистрирован: 14 янв 2009, 13:37
Откуда: Оренбургская область

Re: Аналог FriendlyPinger на PHP

Сообщение root » 03 июн 2009, 15:04

Андрей писал(а):Чет не проги, а целые комплексы

ну да

Андрей писал(а):Кажется придется свое писать

ну типа того
я написал такую штуку юзая fping, использовал perl (скрипт пингалки) + php (веб морда, вывод резалтов, добавление хостов и т.п.) + MySQL (БД)
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1894
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: Аналог FriendlyPinger на PHP

Сообщение Андрей » 03 июн 2009, 19:37

я написал такую штуку юзая fping, использовал perl (скрипт пингалки) + php (веб морда, вывод резалтов, добавление хостов и т.п.) + MySQL (БД)

Вот и я подумываю писать fping + shell + mysql ну и еще кое что.
Позже выложу или сюда или в ЛС.
.ı|ı..ı|ı.
Андрей
местный житель
 
Сообщения: 1028
Зарегистрирован: 14 янв 2009, 13:37
Откуда: Оренбургская область

Re: Аналог FriendlyPinger на PHP

Сообщение Андрей » 18 июн 2009, 07:15

Вобщем написал скрипт.
Пингует указанные хосты, на условии что они стоят по порядку.
Код: Выделить всё
#!/bin/sh
i=1;
while [ ${i} -le 8 ];
do
 res=`/usr/local/sbin/fping -t 10 10.10.0.$i | /usr/local/bin/gawk '{ print $3 }'`
 case $res in
  alive) sost1=`/bin/cat /tmp/lping/10.10.0.$i` ;
      case $sost1 in
                0) ;;
                1) query1=`/usr/local/bin/mysql switch -u monitor -N -e "select address from l3 where ip='10.10.0.$i';"` && /bin/echo '0' > /tmp/lping/10.10.0.$i && /usr/bin/printf "\n`/bin/date`\n $query1 \n Host is UP!" | /usr/local/bin/sendxmpp -u yourserver -p shatrik -j 10.10.254.128:5222 -r Home admin@10.10.254.128 ;;
                *) ;;
            esac;;

  unreachable) sost2=`/bin/cat /tmp/lping/10.10.0.$i`;
            case $sost2 in
                1) ;;
                0) query2=`/usr/local/bin/mysql switch -u monitor -N -e "select address from l3 where ip='10.10.0.$i';"` && /bin/echo '1' > /tmp/lping/10.10.0.$i && /usr/bin/printf "\n`/bin/date`\n $query2 \n Host is DOWN!!!" | /usr/local/bin/sendxmpp -u yourserver -p shatrik -j 10.10.254.128:5222 -r Home admin@10.10.254.128 ;;
                *) ;;
            esac;;
 esac
 i=$(expr ${i} + 1 )
done


вот дамп БД под него.

Код: Выделить всё
-- MySQL dump 10.13
--
-- Host: localhost    Database: switch
-- ------------------------------------------------------
-- Server version       5.1.32-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `l3`
--

DROP TABLE IF EXISTS `l3`;
SET @saved_cs_client     = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `l3` (
  `id` tinyint(4) NOT NULL DEFAULT '0',
  `ip` varchar(16) DEFAULT NULL,
  `address` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
SET character_set_client = @saved_cs_client;

--
-- Dumping data for table `l3`
--

LOCK TABLES `l3` WRITE;
/*!40000 ALTER TABLE `l3` DISABLE KEYS */;
INSERT INTO `l3` VALUES (1,'10.10.0.1','Ul Admirala Kolchaka 1'),(2,'10.10.0.2','Beringova 1'),(3,'10.10.0.3','Uralova 4'),(4,'10.10.0.4','Uralova 8'),(5,'10.10.0.5','Sovetskaya 2'),(6,'10.10.0.6','Sovetskaya 11'),(7,'10.10.0.7','Sovetskaya 42'),(8,'10.10.0.8','Sovetskaya 72b');
/*!40000 ALTER TABLE `l3` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2009-06-18  4:07:22


Скрипт инициализации:
Код: Выделить всё
#!/bin/sh

i=1;
while [ ${i} -le 8 ];
do
touch /tmp/lping/10.10.0.$i && echo '0' > /tmp/lping/10.10.0.$i
 i=$(expr ${i} + 1 )
done

Есть вопросы - пишите в форум. Если есть предложения по оптимизации - жду. :)
Знаю что в id нет автоинкремента. :)
Для оповещения я использовал Jabber-клиента (sendxmpp). Скрипт базируется на sh + mysql + fpinger.
По скрипту вопросов думаю не возникнет.

Сейчас буду писать скриптик для пингования свитчей у которых ip, так сказать, разбросан.
.ı|ı..ı|ı.
Андрей
местный житель
 
Сообщения: 1028
Зарегистрирован: 14 янв 2009, 13:37
Откуда: Оренбургская область

Re: Аналог FriendlyPinger на PHP

Сообщение root » 18 июн 2009, 11:16

Андрей писал(а):Сейчас буду писать скриптик для пингования свитчей у которых ip, так сказать, разбросан.

советую, раз ты уже завязался на БД, то и IP, которые нуна мониторить, бери оттуда
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1894
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: Аналог FriendlyPinger на PHP

Сообщение Андрей » 18 июн 2009, 11:28

Имхо - накладно для самого демона чтоль частые обращения к БД. или нет?

А ip брать из БД я уже думал. Т.к. девайсы когда меняли (после их выхода из строя) некоторые брежи в ip не восстановили, вот и получается, что сейчас если писать в цикле i от 1 до 10, то устройств 3,7-9 нет. :) Придется по id выбирать.

По коду вопросов нет?
.ı|ı..ı|ı.
Андрей
местный житель
 
Сообщения: 1028
Зарегистрирован: 14 янв 2009, 13:37
Откуда: Оренбургская область

Re: Аналог FriendlyPinger на PHP

Сообщение root » 18 июн 2009, 11:51

Андрей писал(а):Имхо - накладно для самого демона чтоль частые обращения к БД. или нет?

нет

Андрей писал(а):По коду вопросов нет?

главное чтоб работал ;)
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1894
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: Аналог FriendlyPinger на PHP

Сообщение Андрей » 18 июн 2009, 12:03

работать - работает.
Я в нем использовал одну штуку хорошую (сам придумал и нигде не списывал). :) Т.к. если скрипт помещается в крон, чтобы в случае отказа не присылалось по 20 сообщений - предусмотрена своего рода проверка "было ли оповещение" - в файл /tmp.lping/10.10.0.$i (где $i изменяемая переменная) прописывается значение 1 или 0, а потом это все проверяется снова. Если есть изменения - то происходит оповещение.

У меня небольшой вопросик.
Хотел вывести сообщение в любое окно терминала ttyv1,2,3 ... только получил жуть страшную. :) я так и не понял почему съезжает вывод почти на полторы строки?

Код: Выделить всё
#echo 'I'm your server' > /dev/ttyv1

получаю:
Код: Выделить всё
login:
                           I'm your server

Аналогичная проблема со всеми остальными выводами. :(
.ı|ı..ı|ı.
Андрей
местный житель
 
Сообщения: 1028
Зарегистрирован: 14 янв 2009, 13:37
Откуда: Оренбургская область

Пред.

Вернуться в Программинг и сети

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10