URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID6
Нить номер: 17280
[ Назад ]

Исходное сообщение
"Мониторинг L2 канала"

Отправлено umca , 01-Окт-08 12:51 
Доброго дня ! Помогите разобраться с такой задачей .
Есть cisco 3560 , есть клиент для которого мы предоставляем канал 2-го уровня (канал  составной  с использованием SHDSL (SHDSL не управляемый) ) - задача мониторить этот канал на отказоустойчивость.
Подскажите как это лучше сделать !

Содержание

Сообщения в этом обсуждении
"Мониторинг L2 канала"
Отправлено chesnok , 02-Окт-08 01:28 
>Доброго дня ! Помогите разобраться с такой задачей .
>Есть cisco 3560 , есть клиент для которого мы предоставляем канал 2-го
>уровня (канал  составной  с использованием SHDSL (SHDSL не управляемый)
>) - задача мониторить этот канал на отказоустойчивость.
>Подскажите как это лучше сделать !

как понять отказоустойчивость ?
состояние интерфейса можно отслеживать при помощи snmp/snmp-trap


"Мониторинг L2 канала"
Отправлено umca , 02-Окт-08 10:21 
>
>как понять отказоустойчивость ?
>состояние интерфейса можно отслеживать при помощи snmp/snmp-trap

Если быть точней мне надо мониторить канал на наличия в нём MAC адреса .


"Мониторинг L2 канала"
Отправлено chesnok , 02-Окт-08 11:48 
>>
>>как понять отказоустойчивость ?
>>состояние интерфейса можно отслеживать при помощи snmp/snmp-trap
>
>Если быть точней мне надо мониторить канал на наличия в нём MAC
>адреса .

по snmp можно снимать состояние fdb коммутатора, либо как сказанно было выше snmpt-trap mac-notifiction (add/remove)


"Мониторинг L2 канала"
Отправлено umca , 02-Окт-08 11:56 

>по 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`ам нет ) нет  !


"Мониторинг L2 канала"
Отправлено umca , 02-Окт-08 11:49 
Может кто подскажет командочку snmp для вывода MAC адресов по всем интерфейсам ?


"Мониторинг L2 канала"
Отправлено CrAzOiD , 02-Окт-08 12:13 
>Может кто подскажет командочку snmp для вывода MAC адресов по всем интерфейсам
>?

sh mac address-table


"Мониторинг L2 канала"
Отправлено Alx , 02-Окт-08 12:27 
>Может кто подскажет командочку 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";
}


"Мониторинг L2 канала"
Отправлено umca , 02-Окт-08 12:52 
>[оверквотинг удален]
>    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`и по  портам !!


"Мониторинг L2 канала"
Отправлено Alx , 02-Окт-08 12:55 
>Спасибо большое , но этот скриптик выводит только arp таблицу , что
>аналогично :
> snmpwalk -c public -v 2c x.x.x.x .1.3.6.1.2.1.17.4.3.1.1
>
>но не выводит MAC`и по  портам !!

Да как не выводит. Выводит. МАС и на каком порте он висит.


"Мониторинг L2 канала"
Отправлено umca , 02-Окт-08 13:04 
>>Спасибо большое , но этот скриптик выводит только 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



"Мониторинг L2 канала"
Отправлено Alx , 02-Окт-08 13:10 
> 796    0000.cd1f.4925    DYNAMIC     Fa0/20

Странный MAC. С 0000 начинается.



"Мониторинг L2 канала"
Отправлено umca , 02-Окт-08 13:25 
>> 796    0000.cd1f.4925    DYNAMIC     Fa0/20
>
>Странный MAC. С 0000 начинается.

если посмотреть принадлежность данного мака к какой то компании то :
00:00:CD    AlliedTele             # Allied Telesis Labs Ltd


"Мониторинг L2 канала"
Отправлено umca , 02-Окт-08 14:35 
Можно сделать это при помощи 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 .

Всем спасибо .


"Мониторинг L2 канала"
Отправлено Alx , 02-Окт-08 14:56 
>[оверквотинг удален]
>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. Там, кажется, попроще это сделать можно.



"Мониторинг L2 канала"
Отправлено umca , 02-Окт-08 15:00 

>
>Еще есть rsh. Там, кажется, попроще это сделать можно.

Хотелось это сделать по snmp , но так и не нашёл решения данного вопроса ,одной строкой по snmp  + графики и т.д.


"Мониторинг L2 канала"
Отправлено sergeyfromkomi , 02-Окт-08 17:19 
>> 796    0000.cd1f.4925    DYNAMIC     Fa0/20
>
>Странный MAC. С 0000 начинается.

show mac-address-table dynamic interface f0/20 (dynamic!)

можно скрипт для обработки и записи в лог придумать...


"Мониторинг L2 канала"
Отправлено umca , 02-Окт-08 19:31 
>show mac-address-table dynamic interface f0/20 (dynamic!)
>
>можно скрипт для обработки и записи в лог придумать...

Конечно можно , скопируйте скрипт выложенный выше , далее  по средствам Unix очень просто сделать
./script.sh >> /log &

далее можно придумать как обработать log файл , что бы он выбирал скажем дату + MAC , если МАС`а нет то что нить вывести на экран или ещё куда нить(чем я сейчас и занимаюсь). Просто мне это надо быстро , а в дальнейшем можно всё это сделать единым скриптом + думаю как нить прикрутить cacti (для красоты)


"Мониторинг L2 канала"
Отправлено chesnok , 03-Окт-08 00:39 
>[оверквотинг удален]
>    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  ?