About Forum Blogs NOC Docs Downloads KB Issues Code CI Registration

nocproject.org

#nocproject.org at irc.freenode.net log.
Back to nocproject.org Back to IRC log index
Date: 12.01.2011
Dmitry1 #
09:09
Hi. Можно ли при выводе команды cli не обрезать первый символ \n ?
09:09
Регекспу нужно скормить последовательность \n\n, а вывод команды cli начинается с одного \n
09:12
Пример:
09:13
реальный вывод из сокета: ыhow lldp remote_ports mode normal\r\n\r\r\nPort ID
09:14
В скрипт попадает: \nPort ID
09:14
А нужно, чтобы попало \n\nPort ID
dvolodin #
09:52
а зачем ему именно два \n\n ?
Dmitry1 #
14:29
В хитровжаренном CLI абсолютно две одинаковых строчки выполняют разные вещи
14:29
\n\nPort ID - локальный порт
14:29
\nPort ID - удаленный порт
14:30
Самый первый локальный порт скрипт "обкусывает" до \nPort ID
dvolodin #
14:51
а как целиком выглядит вывод?
Dmitry1 #
14:51
show lldp remote_port
14:51
\n\nPort ID : 1
14:52
\nЧего-то там
14:52
\nPort ID : 2
14:52
Причем, Port ID : 1 - это локальный порт, а Port ID : 2 - удаленный
14:53
Порты разделяются \n\n
14:53
Но скрипт САМЫЙ ПЕРВЫЙ в списке \n "рубает" вместе с повторением команды
14:54
Т.е. вывод выглядит так: "show stp remote_port\n\nPort ID : 1"
14:54
Мне нужно оставить связку \n\n
dvolodin #
14:55
портов строго два?
Dmitry1 #
14:55
Или как-то добавить "\n" в начало строки.
dvolodin #
14:55
да легко
14:55
s="\n"+self.cli(".....")
Dmitry1 #
14:55
Скорее всего так и решу.
14:56
Че-то не работает lldp с Сisco
14:57
Хитрая Cisco вместо shassis_id в каждую связку подставляет MAC адрес своего интерфейса
14:57
А на 3560 аж 52 интерфейса
15:14
s="\n"+self.cli(".....") не прокатило
15:14
Шаблон rx_line=re.compile(r"\n\nPort ID\s+:\s+",re.MULTILINE) не сработал
dvolodin #
15:23
lldp с cisco работает
15:23
или ты про то, что там chassis_id разные могут быть?
Dmitry1 #
15:26
да
15:26
Из-за этого связка между D-Link и Cisco Catalyst по LLDP не строится
dvolodin #
15:27
красавчики
Dmitry1 #
15:27
А в chassis_id можно больше одного MAC адреса запихнуть?
15:28
cat-3560g#show interfaces | include Hardware is
15:28
Hardware is EtherSVI, address is 0024.1301.b540 (bia 0024.1301.b540)
15:28
Hardware is EtherSVI, address is 0024.1301.b541 (bia 0024.1301.b541)
15:28
Hardware is Gigabit Ethernet, address is 0024.1301.b501 (bia 0024.1301.b501)
15:28
Hardware is Gigabit Ethernet, address is 0024.1301.b502 (bia 0024.1301.b502)
15:28
Hardware is Gigabit Ethernet, address is 0024.1301.b503 (bia 0024.1301.b503)
15:30
Шеститонник честно предупреждает об этом:
15:30
6509_core_switch#show catalyst6000 chassis-mac-addresses
15:30
chassis MAC addresses: 1024 addresses from 0005.7497.4900 to 0005.7497.4cff
15:30
6509_core_switch#
dvolodin #
15:39
это да
15:39
вроде он в LLDP использовал младший mac
Dmitry1 #
15:41
Ну, значит это только болезнь 3560 каталистов. Ондако, как-то с этим нужно бороться.
dvolodin #
15:43
попробую завтра проверить на других
Dmitry1 #
15:43
Я вижу путь решения только один - сделать возможность хранения несколько MAC адресов в chassis_id
dvolodin #
15:45
теоретически можно разрешить get_chassis_id возвращать не только MAC, то и список MAC'ов
Dmitry1 #
15:46
А можно?
15:46
А скрипт пусть идет по списку и смотрит, какой из них подходит.
15:46
Я даже патч напишу.
15:47
В смысле патч для Cisco.IOS.get_chassis_id.py
dvolodin #
15:48
Base ethernet MAC Address : 00:1B:2B:78:17:80
15:48
это вот у мелких каталистов
15:48
и все равно разные маки отдает?
Dmitry1 #
15:50
Base ethernet MAC Address : 00:24:13:01:B5:00
15:50
[{'local_interface': '1', 'neighbors': [{'remote_capabilities': 20, 'remote_chassis_id': '00:24:13:01:B5:1B', 'remote_chassis_id_subtype': 4, 'remote_port': 'Olmat', 'remote_port_subtype': 1, 'remote_system_name': 'sever-cat-3560g.caletv.dp.ua'}]}]
15:52
00:24:13:01:B5:1B - Gi0/27
dvolodin #
15:53
вот собака страшная
Dmitry1 #
15:53
Т.е B5:00 + 27 (десятичное) = B5:1B
dvolodin #
15:53
на шеститонниках так же?
Dmitry1 #
15:54
У меня старая версия IOS. Там нет LLDP.
dvolodin #
15:54
у меня просто LLDP только на блейдовых свичах
15:55
подозреваю, что придется делать вот так
15:55
сделать еще интерфейс get_chassis_ids
15:56
который возвращает список MAC'ов
Dmitry1 #
15:56
О!
dvolodin #
15:56
а дальше так
15:56
в IGetTopologyData
Dmitry1 #
15:56
Да. Было бы не плохо
dvolodin #
15:56
если есть такой скрипт, то возвращать данные из него
15:56
нет - пустой список
15:57
а склеивать уже по тому, что вернули chassis_id и chassis_ids
Dmitry1 #
15:57
Не. В IGetTopologyData пытаться выбрать из списка get_chassis_id + get_chassis_ids
dvolodin #
15:57
не стоит ломать на корню то, что работает везде, кроме cisco
15:57
:)
Dmitry1 #
15:57
Ты первый успел написать :)
dvolodin #
15:58
в IGetTopologyData добавить еще одно поле
15:58
этот интерфейс по природе своей расширяем
15:58
и выдается Generic script'ом
15:58
то есть править все - в одном месте
Dmitry1 #
15:58
Я подозреваю, что все устройства Cisco-like подобным страдают.
dvolodin #
15:58
force10 не страдает
15:58
прокурвы - тоже
Dmitry1 #
15:59
Я имею ввиду часть Allied Telesyn, Linksys, D-Link и т.п.
dvolodin #
15:59
интересно - выдавать просто список маков, или же их диапазон?
15:59
наверное, все-таки, диапазон маков
Dmitry1 #
15:59
Ээээ. Я бы список MAC адресов. Но чтобы оно умело и из диапазона.
dvolodin #
16:00
думаю дырок не бывает
16:00
:)
Dmitry1 #
16:00
sever-cat-3560g#show interfaces | include Hardware is
16:00
Hardware is EtherSVI, address is 0024.1301.b540 (bia 0024.1301.b540)
16:00
Hardware is EtherSVI, address is 0024.1301.b541 (bia 0024.1301.b541)
16:00
Hardware is Gigabit Ethernet, address is 0024.1301.b501 (bia 0024.1301.b501)
16:00
Hardware is Gigabit Ethernet, address is 0024.1301.b502 (bia 0024.1301.b502)
dvolodin #
16:00
Ну
16:00
вот и бери - минимум и максимум
Dmitry1 #
16:00
Последний адрес:
16:00
Hardware is Gigabit Ethernet, address is 0024.1301.b51b (bia 0024.1301.b51b)
16:00
Hardware is Gigabit Ethernet, address is 0024.1301.b51c (bia 0024.1301.b51c)
16:00
sever-cat-3560g#
dvolodin #
16:01
будет .b540 - .b51c
Dmitry1 #
16:01
Между 0024.1301.b51c и 0024.1301.b540 огого как много!
dvolodin #
16:01
b
16:01
и
16:01
не так уж и много
16:02
а
16:02
оно вниз пошло
Dmitry1 #
16:02
36 штук
dvolodin #
16:02
cisco нарезает диапазон mac'ов на ящик
16:02
в зависимости от количества интерфейсов и vlan'ов
16:02
это точно абсолютно
Dmitry1 #
16:04
может и формулой поделишься ? :)
dvolodin #
16:05
у шеститонников, кстати, 1024 MAC'а всего
Dmitry1 #
16:05
Проще список (хэш) сделать, а не диапазон. Хотя тормозить будет не по детски.
dvolodin #
16:06
Cisco_s72033_rp_12_2_18_SXF14_get_chassis_id_0001.py:'show catalyst6000 chassis-mac-addresses': 'show catalyst6000 chassis-mac-addresses\n chassis MAC addresses: 64 addresses from 0014.1b33.1cc0 to 0014.1b33.1cff\n',
16:06
Cisco_s72033_rp_12_2_33_SXH2a_get_chassis_id_0001.py:'show catalyst6000 chassis-mac-addresses': 'show catalyst6000 chassis-mac-addresses\n chassis MAC addresses: 1024 addresses from 0019.07da.ac00 to 0019.07da.afff\n',
16:06
это в тушенке
16:06
таки меняется
Dmitry1 #
16:06
ничем помочь не могую
16:07
Я домой. Надеюсь завтра решим эту проблему.
dvolodin #
16:07
будем возвращать минимальный и максимальный адреса
16:08
я тоже домой
20:06
Есть у меня подозрение, что киска тут ни при чем, а дурит DLink
20:06
подсовывая в качестве chassis id MAC из пакета
Tweet
Share this page
Share this page: Tweet