The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Catalyst 5505 Mac Address table on port (cisco snmp switch mac script)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: cisco, snmp, switch, mac, script,  (найти похожие документы)
Date: Mon, 15 Oct 2001 05:41:14 +0000 (UTC) From: Serov Alexander <serov@micex.com> Newsgroups: fido7.ru.cisco Subject: Catalyst 5505 Mac Address table on port Надеюсь модератор не обидится! В $comm пишем ro community а в списке $cat перечисляем все свои каталисты и не только 5505. На свежих версиях CatOS переменная $blackList не нужна. #!/usr/local/bin/perl ## Author: Serov Alexander (serov@micex.com) use SNMP; $SNMP::use_enums = 1; $SNMP::auto_init_mib = 0; my $comm = 'public;-)'; my %snmphunter; my %porttable; my %blackList; $vtpVlanName = '.1.3.6.1.4.1.9.9.46.1.3.1.1.4'; $dot1dTpFdbPort = '.1.3.6.1.2.1.17.4.3.1.2'; $portTableMIB = '.1.3.6.1.4.1.9.5.1.4.1.1.3'; $PortIfIndex = '.1.3.6.1.2.1.17.1.4.1.2'; $ifName = '.1.3.6.1.2.1.31.1.1.1.1'; $vlan2vlan = '.1.3.6.1.4.1.9.5.1.9.3.1.3.'; $qwery = new SNMP::Varbind([]); $qwery1 = new SNMP::Varbind([]); $qwery2 = new SNMP::Varbind([]); open( SNMPHUNTER,"/home/gosha/snmphunter.dat"); while(<SNMPHUNTER>) { chomp; tr /[\t,' ']//d; @tmp = split(/:/); for $i (1..8) { if ( $tmp[$i]==undef ) { $tmp[$i]=""; }; }; if ( $tmp[9]==undef ) { $tmp[9]=time(); }; @snmphunter{ $tmp[0] } = [ @tmp[1..9] ]; } close SNMPHUNTER; foreach $cat ( '10.0.0.1', '10.0.0.2' ) { delete @porttable{ keys %porttable }; delete $blackList{ keys %blackList }; $sess2 = new SNMP::Session(DestHost=>$cat,Community =>$comm); $qwery2->[$SNMP::Varbind::tag_f] = $portTableMIB; for ( $mib_v = $sess2->getnext($qwery2); $qwery2->tag=~/$portTableMIB/ and not $sess2->{ErrorStr}; $mib_v = $sess2->getnext($qwery2)) { @vn = split(/\./,$qwery2->[$SNMP::Varbind::tag_f]); if ( $vn[14]==2 || $vn[14]==3 ) { $porttable{$mib_v} = [$vn[14],$vn[15]]; }; if ( $vn[14]==4 ) { if ( $cat ne '195.5.1.111' && $cat ne '195.5.1.112' ) { $porttable{$mib_v} = [$vn[14],$vn[15]]; }; }; }; $sess1 = new SNMP::Session(DestHost=>$cat,Community =>$comm); $qwery1->[$SNMP::Varbind::tag_f] = $dot1dTpFdbPort; for ( $mib_v1 = $sess1->getnext($qwery1); $qwery1->tag=~/$dot1dTpFdbPort/ and not $sess1->{ErrorStr}; $mib_v1 = $sess1->getnext($qwery1)) { @vn = split(/\./,$qwery1->[$SNMP::Varbind::tag_f]); $mac = sprintf("%.2x\.%.2x\.%.2x\.%.2x\.%.2x\.%.2x", $vn[12],$vn[13],$vn[14],$vn[15],$vn[16],$vn[17] ); $blackList{$mac} = 1; }; $sess = new SNMP::Session(DestHost=>$cat,Community =>$comm); $qwery->[$SNMP::Varbind::tag_f] = $vtpVlanName; for ( $mib_v = $sess->getnext($qwery); $qwery->tag=~/$vtpVlanName/ and not $sess->{ErrorStr}; $mib_v = $sess->getnext($qwery)) { @vn = split(/\./,$qwery->[$SNMP::Varbind::tag_f]); $vlan = $vn[16]; $tmp_comm = sprintf("%s\@%d",$comm,$vlan); $sess1 = new SNMP::Session(DestHost=>$cat,Community =>$tmp_comm); $qwery1->[$SNMP::Varbind::tag_f] = $dot1dTpFdbPort; for ( $mib_v1 = $sess1->getnext($qwery1); $qwery1->tag=~/$dot1dTpFdbPort/ and not $sess1->{ErrorStr}; $mib_v1 = $sess1->getnext($qwery1)) { @vn = split(/\./,$qwery1->[$SNMP::Varbind::tag_f]); $mac = sprintf("%.2x\.%.2x\.%.2x\.%.2x\.%.2x\.%.2x", $vn[12],$vn[13],$vn[14],$vn[15],$vn[16],$vn[17] ); if ( $porttable{$mib_v1}[0] ne undef && $blackList{$mac}!=1 ) { $slot=$porttable{$mib_v1}[0]; $port=$porttable{$mib_v1}[1]; $sess2 = new SNMP::Session(DestHost=>$cat,Community =>$comm); $port--; $vlan = $sess2->getnext(["$vlan2vlan"."$slot"."."."$port", "" ]); $port++; $snmphunter{ $mac }[0] = $vlan; $snmphunter{ $mac }[1] = $cat; $snmphunter{ $mac }[2] = $slot; $snmphunter{ $mac }[3] = $port; $snmphunter{ $mac }[8] = time(); # print "$mac:$snmphunter{ $mac }[0]:$snmphunter{ $mac }[1]\/$snmphunter{ $mac }[2]\/$snmphunter{ $mac }[3]\n"; }; }; }; }; rename "/home/gosha/snmphunter.dat", "/home/gosha/snmphunter.dat.bak"; open( SNMPHUNTER,">/home/gosha/snmphunter.dat"); foreach $mac ( keys(%snmphunter) ) { @tmp = @{ $snmphunter{ $mac }}; $tmp = join(":",($mac,@tmp)); print SNMPHUNTER $tmp,"\n"; print $tmp,"\n"; }; close SNMPHUNTER; # print "ok";

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру