Парсинг выдачи snmp в perl

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Darnet
проходил мимо

Парсинг выдачи snmp в perl

Непрочитанное сообщение Darnet » 2010-04-08 10:39:52

Суть вследующем, есть есть функция на перл:

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

sub parse_switch {
   my ($community, $switch, $command) = @_;

   open(SNMP,"snmpwalk -v2c -c $community $switch $command|");
   while (<SNMP>) {
   chomp;
   my ($oid, $mac) = split /=\s*/;

   $_ = $mac;
   s/\s*$//;s/(?:[^:]+: )((?:[\dA-F]{2}?)+)/$1/;tr/A-F/a-f:/;s/ /:/g;
   $mac_table{$_} = $mac;  
   }
   close(SNMP)
}
Сейчас она возвращает мак адреса в виде 00:43:f5:43:23:32, а нужно чтобы еще и номер вилана. Команда:

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

snmpwalk -v2c -c $community $switch $command
выводит вот это:

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

RFC1213-MIB::atPhysAddress.325.1.172.16.13.132 = Hex-STRING: 00 03 CD 02 01 EF
где 325 номер вилана, а 00 03 CD 02 01 EF мак адрес. Может кто-нибудь поможет с этой ситуацией.

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

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35462
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Парсинг выдачи snmp в perl

Непрочитанное сообщение Alex Keda » 2010-10-03 17:36:26

переписать - не?
Убей их всех! Бог потом рассортирует...

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: Парсинг выдачи snmp в perl

Непрочитанное сообщение thefree » 2010-10-03 21:25:19

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

sub parse_switch {
   my ($community, $switch, $command) = @_;

   open(SNMP,"snmpwalk -v2c -c $community $switch $command|");
   while (<SNMP>) {
   chomp;
   my ($oid, $mac) = split /=\s*/;

   $_ = $mac;
   s/\s*$//;s/(?:[^:]+: )((?:[\dA-F]{2}?)+)/$1/;tr/A-F/a-f:/;s/ /:/g;
   $mac_table{$_} = $mac;
   if ($oid =~ m/atPhysAddress\.(\d+)/) {
      $oid_table{$oid} = $1;
   }
   }
   close(SNMP)
}
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету