Авг 06 2009

Скрипт по мониторингу количества mac адресов для свитчей ExtremeNetworks

По специфике работы, мне приходится считать число мак адресов во вланах, через которые проходит транспорт для клиентов. IP адресов в этих вланах у меня нет, мониторинг простой посылкой icmp echo request(ping) невозможен. Приходится считать число маков. Если их меньше чем ожидалось со стороны клиента, то что то тут не так. Поскольку в отличии от Cisco мониторить удается только через telnet, то для работы скрипта нужен перловый модуль Net::Telnet::Cisco.

А сам скрипт выглядит так:

#!/usr/bin/perl -w
if(!$ARGV[0] and !$ARGV[1] and !$ARGV[2])
{
  print "Missing parameters\n";
  exit;
}
use Net::Telnet::Cisco;
#Имя влана
$vlan=$ARGV[0];
chomp $vlan;
#Число mac адресов
$nums=$ARGV[1];
chomp $nums;
#Клиентский порт
$port=$ARGV[2];
chomp $port;
#IP адрес или имя коммутатора
$switch="switch";
#Логин пользователя
$login='hilik';
#Пароль
$pass='hilik-123';
my $session = Net::Telnet::Cisco->new(Host => $switch, Timeout => 120 );
$session->login($login, $pass);
my @output = $session->cmd("sh fdb vlan $vlan");
$i=0;
foreach(@output)
{
  if($_=~/^[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]/)
  {
    @out=split(" ",$_);
    if($out[5] eq $port)
    {
      $i=$i+1;
    }
  }
}
if($i lt $nums)
{
  print "ERROR $i\n";
  exit 1;
 
}
else
{
  print "OK $i\n";
  exit 0;
}

В качестве параметров скрипту передается адрес свитча, имя влана, число ожидаемых маков и номер клиентского порта.
Скрипт у меня работает достаточно давно.

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Украинская Баннерная Сеть