У меня есть система с более чем 50 различными машинами Linux (машины BLADE) со следующим диапазоном IP-адресов
165.23.1.21-165.23.1.64 ( each Linux machine have 4 eth - eth1,2,3,4)
Система подключена к 4 коммутаторам Cisco через LANS кабель.
Моя цель - проверить каждый eth на машине Linux, был ли этот eth подключен к какому порту коммутатора.
например
./my_tool
machine1 results
linux_machine1_eth0 connected to switch_1_port_15
linux_machine1_eth1 connected to switch_2_port_15
linux_machine1_eth2 connected to switch_1_port_16
linux_machine1_eth3 connected to switch_2_port_16
machine2 results
linux_machine2_eth0 connected to switch_1_port_22
linux_machine2_eth1 connected to switch_4_port_7
linux_machine2_eth2 connected to switch_1_port_23
linux_machine2_eth3 connected to switch_4_port_8
.
.
Мой вопрос, какой инструмент может помочь определить, какой eth на машинах Linux подключен к какому порту в коммутаторе?
remark - 1. the tool can be also script that runs on the Linux machines
2. we have access to the switch by telnet
Вы можете написать сценарий Perl, используя Net::Telnet::Cisco
и Net::OpenSSH
чтобы автоматизировать это. Я предоставлю один здесь, если найду время сегодня.
ОБНОВИТЬ
Как задает вопросник в комментарии: Если вы хотите получать информацию через SNMP, в библиотеке cisco есть отличная документация: http://www.cisco.com/en/US/tech/tk648/tk362/technologies_tech_note09186a00801c9199.shtml
Короче: вам нужно объединить выходы пяти snmpwalk
s (где crumpy
ты переключаешься)
snmpwalk -c public crumpy .1.3.6.1.4.1.9.9.46.1.3.1.1.2 # get vlan states
snmpwalk -c public@1 crumpy .1.3.6.1.2.1.17.4.3.1.1 # get mac table
snmpwalk -c public@1 crumpy .1.3.6.1.2.1.17.4.3.1.2 # get the switchport numbers for the vlans (here Vlan1)
snmpwalk -c public@1 crumpy .1.3.6.1.2.1.17.1.4.1.2 # switchport to if number
snmpwalk -c public@1 crumpy .1.3.6.1.2.1.31.1.1.1.1 # get the interface names
Из Документов:
6. Link a MAC address to the port on which the address was learned.
* From Step 1, the MAC address is:
17.4.3.1.1.0.0.12.7.172.8 = Hex: 00 00 0C 07 AC 08
* From Step 2, the bridge port tells that the MAC address belongs to bridge port number 13:
17.4.3.1.2.0.0.12.7.172.8 = 13
* From Step 3, the bridge port number 13 has ifIndex number 2:
17.1.4.1.2.13 = 2
* From Step 4, the ifIndex 2 corresponds to port Fast Ethernet 0/1:
ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.2 = Fa0/1
Если CDP включен на переключателе, вы можете дать cdpr
попытка. Это простая программа, которую вы запускаете на серверах и слушаете объявления CDP.
petrus@seth:~$ sudo cdpr
cdpr - Cisco Discovery Protocol Reporter
Version 2.2.1
Copyright (c) 2002-2006 - MonkeyMental.com
1. eth0 (No description available)
2. wlan0 (No description available)
3. virbr0 (No description available)
<snip>
12. lo (No description available)
Enter the interface number (1-12):1
Using Device: eth0
Waiting for CDP advertisement:
(default config is to transmit CDP packets every 60 seconds)
Device ID
value: switch01
Addresses
value: 192.168.12.15
Port ID
value: 0/15
cdpr
также может загрузить данные на веб-сервер с помощью запроса GET.
Думаю, вам придется подойти к каждому переключателю и дать команду
show mac-address-table
и запишите предоставленную информацию. Затем перейдите к каждой машине с Linux и сделайте что-нибудь вроде
echo $(hostname); ifconfig eth0 | grep HWaddr | awk '{print " "$1,$5}'
Теперь у вас есть 2 списка, которые нужно сопоставить.
OpenNMS делает это хорошо благодаря Связанная функция, автоматически обнаруживая связи между узлами через SNMP, CDP и через информацию о маршрутизации. Это также позволяет вам создавать карты топологии.
Страница ссылок коммутатора выглядит так:
Хотя страница ссылок узла выглядит так:
Помимо этого, вы застряли в какой-то версии show mac address
рутина на переключателе.