Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: perl и bash скрипт  (Прочитано 1188 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ulan44

  • Автор темы
  • Участник
  • *
  • Сообщений: 166
    • Просмотр профиля
perl и bash скрипт
« : 22 Октября 2009, 06:37:17 »
В общем такая проблема не знаю может и кто делал такое но вот
в bash все ок, то есть идет проверка работа способности интенет канала, но дело в том что есть еще пару
хостов которые тоже нужно проверять на работо способность и было принято решение привязать к самописному биллингу через mysql
в общем через форму заносятся ip адреса и имена интерфейсов которые нужно проверять. Так вот далее иедт скрипт на perl который не понятно как
ставит на угад что хост UP или DOWN.

На баше работает все замечательно...
#!/bin/bash

GW1="83.xxx.xxx.xxx";
IF1="eth0"

ping -c 3 -q $GW1 -I $IF1 > /dev/null
if [ $? -eq 0 ]; then
echo "$GW1      $IF1    up" >> /usr/local/scripts/utils/tmp/log_eth0;
 else
beep -f 1000 -n -f 2000 -n -f 2000
echo `date`     "$GW1   $IF1    down" >> /usr/local/scripts/utils/tmp/log_eth0;
fi
 И так далее по списку интерфейсов

Вот perl по идее все должно работать замечательно но при выполнении
живет своей жизнью и не определяет хосты что они работаю или нет
просто тупо ставит либо UP либо DOWN даже закономерности нету никакой так от балды проставляет

#!/usr/bin/perl -w

use FindBin;
use lib $FindBin::Bin;
require 'inc/db.pl';

$db=Connect();
$q=$db->prepare("select gate, iface from gateway");
#$q=$db->prepare("SELECT gate, iface FROM gateway where gate order by gate");
$q->execute;
while (($gate, $iface) = $q->fetchrow_array()) {
system("
ping -c 3 $gate -I $iface > /dev/null
if [ $? -eq 0 ]; then
echo '$gate\t $iface\t up'
else
echo '$gate\t $iface\t down'
fi");
}
$q->finish();
$db->disconnect();

Оффлайн ulan44

  • Автор темы
  • Участник
  • *
  • Сообщений: 166
    • Просмотр профиля
Re: perl и bash скрипт
« Ответ #1 : 25 Октября 2009, 17:32:59 »
В общм решение пришло само =)

#!/usr/bin/perl -w

use FindBin;
use lib $FindBin::Bin;
require 'inc/db.pl';

$db=Connect();
$q=$db->prepare("select gate, iface from gateway");
$q->execute;
while (($gate, $iface) = $q->fetchrow_array()) {
 if (system("ping -c 3 $gate -I $iface > /dev/null"))
   {print "$gate\t $iface\t down";}
  else
   {print "$gate\t $iface\t up";}
}
$q->finish();
$db->disconnect();

 

Страница сгенерирована за 0.016 секунд. Запросов: 21.