@nocproject

Страница 268 из 2357
Aleksandr
02.09.2016
16:05:58
DLink.DXS

и DLink.DXS_Cisco_CLI

Andrey
02.09.2016
16:06:45
да, надо допиливать профиль

он не собирает ifindex

Google
Aleksandr
02.09.2016
16:07:20
у какого подсмотреть?

Andrey
02.09.2016
16:07:22
2 варианта. Либо приделывать сбор индексов по snmp, либо искать команду на оборудовании, которая показывает индексы для интерфейсов

Aleksandr
02.09.2016
16:07:23
ios?

snmp правильнее в разы

это все стандартный функционал

удивелен, что его до сих пор нет

в том же generic

Andrey
02.09.2016
16:08:27
просто, более правильная политика, когда ifindex отдаёт железка по команде в CLI

Aleksandr
02.09.2016
16:09:12
это очень-очень-очень спорное утверждение

Andrey
02.09.2016
16:09:39
нет. потому что когда отрабатывает профиль SNMP на железке может быть отключён

а ifindex много где могут быть полезны

Aleksandr
02.09.2016
16:09:52
собрать полную таблицу интерфейсов с описаниями - в разы быстрее и проще по snmp, чем лопатить cli

почему это он может быть отключен?

Google
Andrey
02.09.2016
16:10:19
да хоть почему, сети везде разные

def get_ifindex(self): try: c = self.cli("show snmp mib ifmib ifindex") except self.CLISyntaxError: return {} r = {} for l in c.split("\n"): match = self.rx_ifindex.match(l.strip()) if match: r[match.group("interface")] = int(match.group("ifindex")) return r

для циско всё просто

есть аналогичная команда для длинка?

Aleksandr
02.09.2016
16:10:48
в погоне не пойми зачем - ломаете полноценный функционал, который работает везде и отключать snmp - это частный случай

приплыли... через cli смотрим в snmp

Andrey
02.09.2016
16:11:14
никто его не ломал

просто, получение индексов для профиля Длинка не неписано

сложно сломать то, чего нет

Aleksandr
02.09.2016
16:11:57
это реально закат солнца вручную

Andrey
02.09.2016
16:12:29
не понял аналогии. минуту, я найду профиль где это сделано через SNMP

Ivan
02.09.2016
16:13:53
Можно ведь волк сделать, из этого построить соответствие

Andrey
02.09.2016
16:14:58
def get_ifindex_map(self): """ Retrieve name -> ifindex map """ m = {} if self.has_snmp(): try: # IF-MIB::ifDescr t = self.snmp.get_table("1.3.6.1.2.1.2.2.1.2") for i in t: if t[i].startswith("ControlEthernet"): continue m[self.profile.convert_interface_name(t[i])] = i except self.snmp.TimeOutError: pass else: s = self.cli("show snmp interface") for l in s.splitlines(): match = self.rx_ifindex.match(l) if match: if match.group("name").startswith("ControlEthernet"): continue m[self.profile.convert_interface_name(match.group("name"))] = match.group("ifindex") return m

вот, эту функцию можно использовать, для допиливания профиля

если есть SNMP - делаем через таблицу, если нет - выполняем команду

возвращает словарь вида {имя_интерфейса: индекс}. Сама функция из IOSXR профиля

поскольку, профиль для Dlink, можно проконсультироваться у @dmitryluhtionov

Aleksandr
02.09.2016
16:21:15
для меня дико на это смотреть.... даже представить не мог, что сбора счетчиков и описания по интерфейсам не используется snmp... который быстрее и легче cli и стандартный для огромного количества железа

Andrey
02.09.2016
16:22:25
стандартный, это сильно сказано. Там тоже есть свои заморочки НОКу SNMP никогда, особо, был не нужен

он понадобился только с включением PM

Google
Aleksandr
02.09.2016
16:23:06
что касается ifmib - именно стандартный

Andrey
02.09.2016
16:23:28
и как по нему получить поддерживает интерфейс CDP или нет?

Aleksandr
02.09.2016
16:23:31
прочие выкрутасы с прошивками - да

Andrey
02.09.2016
16:23:38
или включён там STP или нет?

по интерфейсам собирается огромное количество информации

индексы, это только малая часть

вланы, поддерживаемые протоколы, IP адреса ...

Алексей
02.09.2016
16:24:57
что касается ifmib - именно стандартный
Это так. Есть предложение как сделать?

Aleksandr
02.09.2016
16:25:17
дык в generic засунуть?

если snmp включен - собрать по snmp

есть же часть

Алексей
02.09.2016
16:25:38
Ну вот скрипт как раз

Его просто никто не делал

Andrey
02.09.2016
16:26:02
можно get_ifindex вынести в Generic

или в __init__.py прописать функцию

Алексей
02.09.2016
16:26:25
А он там вроде и есть

Aleksandr
02.09.2016
16:26:31
ifindex,ifname,ifdescr,ifalias

Алексей
02.09.2016
16:26:53
Ну да

Andrey
02.09.2016
16:26:54
нет, нету

Алексей
02.09.2016
16:27:03
Вот как раз их и надо сделать

Google
Andrey
02.09.2016
16:27:20
ой)

в смысле есть такой

можно пользоваться

get_ifindexes.py

вызывать из скрипта интерфейсов

self.scripts.get_ifindexes()

Aleksandr
02.09.2016
16:29:48
только его надо бы допилить, чтоб и имена интерфейсов собирал все - ifname,ifdescr,ifailas и использовал то, что ему будет сказано использовать, ибо удобочитаемые описания портов сидят в ifalias обычно

Andrey
02.09.2016
16:29:57
зачем?

это всё и без него собирается

Aleksandr
02.09.2016
16:31:07
я привел пример для dxs_cisco_cli - на графиках висит описание, которое вообще висит на вилане, но оно висит на всех физических интерфейсах, вместо описаний на этих интерфейсах, а чисто dxs пока еще толком не рисовал

Andrey
02.09.2016
16:31:45
это означает что надо поправить скрипт, в плане забирания описания интерфейсов.

через cli можно забрать

Aleksandr
02.09.2016
16:51:30
ifdescr у dlink выглядит так 'D-Link DGS-3120-24SC R4.00.B02 Port 1 on Unit 1' а описание лежит в ifalias

и не все так просто... с self.scripts.get_ifindexes() , т.к. он возвращает {'1': 1, '10': 10, '11': 11, '12': 12, '13': 13, '14': 14, '15': 15, '16': 16, '17': 17, '18': 18, '19': 19, '2': 2, '802.1Q Encapsulation Tag 2269': 3292, '9': 9, тогда как имена портов идут, в данном случае, 1:1 1:10 1:24, а если железка будет в стеке, то будут 2:1 2:11 и т.д. а индекс будет только накручиваться, т.ч. тут пилить и пилить

Andrey
02.09.2016
17:29:00
он возвращает ifmib, таблицу

что в ней, то и возвращает

различные преобразования и разбор делаются в get_interfaces

и не саму таблицу, а ifDescr: ifIndex

Aleksandr
03.09.2016
08:18:27
не все так просто, как хотелось бы.... des3526,des3200 по snmp отдают ifname как 1/1-1/24 при этом cli показывает порты как 1-24, при этом ifdescr для 3526 пишет RMON Port 19 on Unit 1, а 3200 пишет D-Link DES-3200-28 R4.38.B010 Port 28, но по snmp тоже 1/28, т.е. настроить однообразный вывод имени интерфейса для сопоставления snmp ifindex с cli port index - не просто... видимо придется для каждой модели свой метод прописывать

на свичах аля 3120 и 3420 D-Link DGS-3420-28SC R1.77.B00 Port 6 on Unit 1 в cli порт идут как slot:port, а по snmp тоже slot/port

Google
Алексей
03.09.2016
10:31:38
Aleksandr
03.09.2016
12:34:03
нужно как-то замапить альтернативные имена интерфейсов... по snmp идет как 1/1, локально 1:1, по lldp на удаленной машине - 1/1... прикрутил 1:1 к индексам, но теперь lldp отвалился - Trying to guess remote port 1/1 ... куда копать?

а 1/1 он видит с удаленного свича

Алексей
03.09.2016
12:45:48
там метод есть для этого

convert_interface_name

в __init__.py обычно лежит

Aleksandr
03.09.2016
12:50:32
этого мало

ибо тут смотрит на lldp

метод нашел и поправил, только с lldp не вяжется, потому что видит на удаленной стороне 1/1 а локально на этом свиче такого интерфейса нет

Ivan
03.09.2016
12:53:13
Может, везде делать перебор slot:port, slot:port, slot-port?

Aleksandr
03.09.2016
12:56:18
тут перебирает /services/discovery/jobs/box/lldp.py

можно как-то сохранять два имени интерфейса под одним индексом?

т.с. альтернативные имена...

это косяк длинка, тут без вариантов, по snmp и в сеть одно отдает, в cli другое

Andrey
03.09.2016
13:48:19
lldp при линковке интерфесов выполняет для них convert_interface_name

соответственно профилю

вернее не lldp а discovery

kk
03.09.2016
14:47:23
появилось понимание ?
разное название пакетов же.

Aleksandr
03.09.2016
15:37:45
lldp при линковке интерфесов выполняет для них convert_interface_name
это сложнее сделать, когда опрашиваешь cisco а в удаленном порту dlink , который светит порт как отдает в snnp, а все локально хранит как в cli, т.е. откуда cisco знать, как конвертировать чужое оборудование, поэтому тут либо все порты приводить к виду как в snmp, либо писать глобальный костыль в base.py

Andrey
03.09.2016
15:44:34
когда линкуются интерфесы, уже есть определённость по MO, а значит, понятно, чей конвертер применять

Страница 268 из 2357