Доброго дня ! Помогите разобраться с такой задачей .
Есть cisco 3560 , есть клиент для которого мы предоставляем канал 2-го уровня (канал составной с использованием SHDSL (SHDSL не управляемый) ) - задача мониторить этот канал на отказоустойчивость.
Подскажите как это лучше сделать !
>Доброго дня ! Помогите разобраться с такой задачей .
>Есть cisco 3560 , есть клиент для которого мы предоставляем канал 2-го
>уровня (канал составной с использованием SHDSL (SHDSL не управляемый)
>) - задача мониторить этот канал на отказоустойчивость.
>Подскажите как это лучше сделать !как понять отказоустойчивость ?
состояние интерфейса можно отслеживать при помощи snmp/snmp-trap
>
>как понять отказоустойчивость ?
>состояние интерфейса можно отслеживать при помощи snmp/snmp-trapЕсли быть точней мне надо мониторить канал на наличия в нём MAC адреса .
>>
>>как понять отказоустойчивость ?
>>состояние интерфейса можно отслеживать при помощи snmp/snmp-trap
>
>Если быть точней мне надо мониторить канал на наличия в нём MAC
>адреса .по snmp можно снимать состояние fdb коммутатора, либо как сказанно было выше snmpt-trap mac-notifiction (add/remove)
>по snmp можно снимать состояние fdb коммутатора, либо как сказанно было выше
>snmpt-trap mac-notifiction (add/remove)Этот параметр стоит . вот только максимум , что я могу увидеть это состояние ARP таблицы ( она у меня в Vlan 1 )
snmpwalk -c XXXX -v 2c X.X.X.X .1.3.6.1.2.1.17.4.3.1.1Тут показует всё красиво , но далее ни как !
, а вот остальных MAC`ов (по другим интерфейсам и vlan`ам нет ) нет !
Может кто подскажет командочку snmp для вывода MAC адресов по всем интерфейсам ?
>Может кто подскажет командочку snmp для вывода MAC адресов по всем интерфейсам
>?sh mac address-table
>Может кто подскажет командочку snmp для вывода MAC адресов по всем интерфейсам
>?Попробуй этот скриптик. Выводит MAC'и по портам. Но тестировался на свичах управляемых. Думаю, должно и в Cisco работать.
#!/usr/bin/perl
# Igor Chubin, 2007
our $community = "public";
our $switch = "192.168.7.1";open(SNMP,"snmpwalk -On -OQ -v1 -c $community $switch .1.3.6.1.2.1.17.4.3.1.1|") or die "Can't run snmpwalk";
while (<SNMP>)
{
chomp;
s@.1.3.6.1.2.1.17.4.3.1.1@@;
my ($oid, $mac) = split /=\s*/;$_=$mac;
s@"@@g; s@\s*$@@; s@ @:@g; s@(.)@\l\1@g; s@^0@@; s@:0@:@g;$mac_table{$_}=$oid;
}
close(SNMP);open(SNMP,"snmpwalk -On -OQ -v1 -c $community $switch .1.3.6.1.2.1.17.4.3.1.2|") or die "Can't run snmpwalk";
while (<SNMP>)
{
chomp;
s@.1.3.6.1.2.1.17.4.3.1.2@@;
my ($oid, $port) = split /=/;
$ports_table{$oid}=$port;
}
close(SNMP);for $oid (keys %mac_table) {
print "$oid -> ".$ports_table{$mac_table{$oid}}."\n";
}
>[оверквотинг удален]
> chomp;
> s@.1.3.6.1.2.1.17.4.3.1.2@@;
> my ($oid, $port) = split /=/;
> $ports_table{$oid}=$port;
>}
>close(SNMP);
>
>for $oid (keys %mac_table) {
> print "$oid -> ".$ports_table{$mac_table{$oid}}."\n";
>}Спасибо большое , но этот скриптик выводит только arp таблицу , что аналогично :
snmpwalk -c public -v 2c x.x.x.x .1.3.6.1.2.1.17.4.3.1.1но не выводит MAC`и по портам !!
>Спасибо большое , но этот скриптик выводит только arp таблицу , что
>аналогично :
> snmpwalk -c public -v 2c x.x.x.x .1.3.6.1.2.1.17.4.3.1.1
>
>но не выводит MAC`и по портам !!Да как не выводит. Выводит. МАС и на каком порте он висит.
>>Спасибо большое , но этот скриптик выводит только arp таблицу , что
>>аналогично :
>> snmpwalk -c public -v 2c x.x.x.x .1.3.6.1.2.1.17.4.3.1.1
>>
>>но не выводит MAC`и по портам !!
>
>Да как не выводит. Выводит. МАС и на каком порте он висит.
>У меня стоит cisco 3560
ввожу
test# snmpwalk -c public -v 2c 217.28.208.12 .1.3.6.1.2.1.17.4.3.1.1
SNMPv2-SMI::mib-2.17.4.3.1.1.0.3.71.193.123.158 = Hex-STRING: 00 03 47 C1 7B 9E
SNMPv2-SMI::mib-2.17.4.3.1.1.0.7.14.137.213.209 = Hex-STRING: 00 07 0E 89 D5 D1
SNMPv2-SMI::mib-2.17.4.3.1.1.0.10.138.56.159.168 = Hex-STRING: 00 0A 8A 38 9F A8
SNMPv2-SMI::mib-2.17.4.3.1.1.0.10.139.69.0.27 = Hex-STRING: 00 0A 8B 45 00 1B
SNMPv2-SMI::mib-2.17.4.3.1.1.0.13.40.208.31.128 = Hex-STRING: 00 0D 28 D0 1F 80
SNMPv2-SMI::mib-2.17.4.3.1.1.0.13.40.208.31.129 = Hex-STRING: 00 0D 28 D0 1F 81
SNMPv2-SMI::mib-2.17.4.3.1.1.0.18.127.56.212.192 = Hex-STRING: 00 12 7F 38 D4 C0
SNMPv2-SMI::mib-2.17.4.3.1.1.0.24.185.102.173.192 = Hex-STRING: 00 18 B9 66 AD C0
SNMPv2-SMI::mib-2.17.4.3.1.1.0.25.6.102.231.192 = Hex-STRING: 00 19 06 66 E7 C0
SNMPv2-SMI::mib-2.17.4.3.1.1.0.25.47.19.178.0 = Hex-STRING: 00 19 2F 13 B2 00
SNMPv2-SMI::mib-2.17.4.3.1.1.0.25.47.19.202.192 = Hex-STRING: 00 19 2F 13 CA C0
SNMPv2-SMI::mib-2.17.4.3.1.1.0.26.112.142.11.229 = Hex-STRING: 00 1A 70 8E 0B E5
SNMPv2-SMI::mib-2.17.4.3.1.1.0.26.112.142.11.230 = Hex-STRING: 00 1A 70 8E 0B E6
SNMPv2-SMI::mib-2.17.4.3.1.1.0.26.227.170.11.192 = Hex-STRING: 00 1A E3 AA 0B C0
SNMPv2-SMI::mib-2.17.4.3.1.1.0.27.12.96.146.98 = Hex-STRING: 00 1B 0C 60 92 62
SNMPv2-SMI::mib-2.17.4.3.1.1.0.27.12.96.146.99 = Hex-STRING: 00 1B 0C 60 92 63
SNMPv2-SMI::mib-2.17.4.3.1.1.0.27.143.245.142.130 = Hex-STRING: 00 1B 8F F5 8E 82
SNMPv2-SMI::mib-2.17.4.3.1.1.0.27.143.245.142.192 = Hex-STRING: 00 1B 8F F5 8E C0
SNMPv2-SMI::mib-2.17.4.3.1.1.0.28.176.241.21.64 = Hex-STRING: 00 1C B0 F1 15 40
SNMPv2-SMI::mib-2.17.4.3.1.1.0.29.69.85.206.129 = Hex-STRING: 00 1D 45 55 CE 81
SNMPv2-SMI::mib-2.17.4.3.1.1.0.29.69.85.206.192 = Hex-STRING: 00 1D 45 55 CE C0
SNMPv2-SMI::mib-2.17.4.3.1.1.0.29.113.60.219.192 = Hex-STRING: 00 1D 71 3C DB C0
SNMPv2-SMI::mib-2.17.4.3.1.1.0.29.113.248.17.25 = Hex-STRING: 00 1D 71 F8 11 19
SNMPv2-SMI::mib-2.17.4.3.1.1.0.29.113.248.17.64 = Hex-STRING: 00 1D 71 F8 11 40
SNMPv2-SMI::mib-2.17.4.3.1.1.0.29.119.3.65.0 = Hex-STRING: 00 1D 77 03 41 00
SNMPv2-SMI::mib-2.17.4.3.1.1.0.29.119.3.65.22 = Hex-STRING: 00 1D 77 03 41 16
SNMPv2-SMI::mib-2.17.4.3.1.1.0.29.161.222.9.129 = Hex-STRING: 00 1D A1 DE 09 81
SNMPv2-SMI::mib-2.17.4.3.1.1.0.29.161.222.9.192 = Hex-STRING: 00 1D A1 DE 09 C0
SNMPv2-SMI::mib-2.17.4.3.1.1.0.29.229.108.88.64 = Hex-STRING: 00 1D E5 6C 58 40
SNMPv2-SMI::mib-2.17.4.3.1.1.0.30.20.139.44.64 = Hex-STRING: 00 1E 14 8B 2C 40
SNMPv2-SMI::mib-2.17.4.3.1.1.0.30.189.7.26.192 = Hex-STRING: 00 1E BD 07 1A C0
SNMPv2-SMI::mib-2.17.4.3.1.1.0.33.27.211.176.8 = Hex-STRING: 00 21 1B D3 B0 08
SNMPv2-SMI::mib-2.17.4.3.1.1.0.33.86.61.47.154 = Hex-STRING: 00 21 56 3D 2F 9Aдалее
c3560s#sh mac-address-table inter fa 0/20
Mac Address Table
-------------------------------------------Vlan Mac Address Type Ports
---- ----------- -------- -----
796 0000.cd1f.4925 DYNAMIC Fa0/20
В данном выводе команды snmpwalk данный MAC не найден - 0000.cd1f.4925
> 796 0000.cd1f.4925 DYNAMIC Fa0/20Странный MAC. С 0000 начинается.
>> 796 0000.cd1f.4925 DYNAMIC Fa0/20
>
>Странный MAC. С 0000 начинается.если посмотреть принадлежность данного мака к какой то компании то :
00:00:CD AlliedTele # Allied Telesis Labs Ltd
Можно сделать это при помощи expectвот есть крипт для выполнения этой задачи
#!/usr/local/bin/expect
spawn telnet -K x.x.x.x
expect "Username:" {send "login\r"}
expect "Password:" {send "пасс\r"}
expect "" {send "enable\r"}
expect "Password:" {send "пасс на enable\r"}
expect "" {send "show mac-address-table inter fa 0/20 $argv\r"}
expect "SWITCH1" {send "exit\r"}
всё работает , только надо поставить в cron .Всем спасибо .
>[оверквотинг удален]
>expect "Password:" {send "пасс\r"}
>expect "" {send "enable\r"}
>expect "Password:" {send "пасс на enable\r"}
>expect "" {send "show mac-address-table inter fa 0/20 $argv\r"}
>expect "SWITCH1" {send "exit\r"}
>
>
>всё работает , только надо поставить в cron .
>
>Всем спасибо .Еще есть rsh. Там, кажется, попроще это сделать можно.
>
>Еще есть rsh. Там, кажется, попроще это сделать можно.Хотелось это сделать по snmp , но так и не нашёл решения данного вопроса ,одной строкой по snmp + графики и т.д.
>> 796 0000.cd1f.4925 DYNAMIC Fa0/20
>
>Странный MAC. С 0000 начинается.show mac-address-table dynamic interface f0/20 (dynamic!)
можно скрипт для обработки и записи в лог придумать...
>show mac-address-table dynamic interface f0/20 (dynamic!)
>
>можно скрипт для обработки и записи в лог придумать...Конечно можно , скопируйте скрипт выложенный выше , далее по средствам Unix очень просто сделать
./script.sh >> /log &далее можно придумать как обработать log файл , что бы он выбирал скажем дату + MAC , если МАС`а нет то что нить вывести на экран или ещё куда нить(чем я сейчас и занимаюсь). Просто мне это надо быстро , а в дальнейшем можно всё это сделать единым скриптом + думаю как нить прикрутить cacti (для красоты)
>[оверквотинг удален]
> chomp;
> s@.1.3.6.1.2.1.17.4.3.1.2@@;
> my ($oid, $port) = split /=/;
> $ports_table{$oid}=$port;
>}
>close(SNMP);
>
>for $oid (keys %mac_table) {
> print "$oid -> ".$ports_table{$mac_table{$oid}}."\n";
>}это решение, но не понятно для чего применяется perl если это можно выпонить в shell, наверное оптимальнее было бы испоьзовать всеже net::snmp ?