nocproject.org
03:29
Dmitry1, dvolodin скажите что-нибудь в
NOC-1267, там человек уже столько патчей прислал
03:30
в смысле хоть какую-то обратную связь, дорожить надо такими пользователями :)
03:32
lexus-omsk: это йа :-)
03:33
Патч на самом деле один, просто он обновляется :-)
05:31
lexus-omsk, да, кому-то везет, саппортят 5350, вот уж какое говно откопали, у меня есть такие железки, по семь лет аптайма, никак не дождусь пока сдохнут. а вот новые железки на ios xr никто не пользует, печально
06:11
Dmitry1, ты тут?
06:23
zi_rus: новые железки на ios xr не все могут себе позволить, а те, кто могут, используют немного другой софт вместо noc'а
06:23
и только я тут один такой... :)
06:24
ростелеком, нищая контора, ага :)
06:24
кто тут еще засветился
06:24
мтс кажется был
06:26
_4ePTeHok, ты тут?
06:29
ростелеком сосёт хуавеи и джунипера
06:30
но вы же пользуетесь ноком
06:31
не пользуемся.
06:31
это всё баловство.
06:31
сколько ты мозг выносил про service instance и дискавери
06:31
а маки
06:32
ну и что? это всё моё баловство и перфекционизм.
06:32
от нечего делать.
06:32
наш мрцус принципиально не будет это использовать никогда.
06:33
и мы знаем что если ядро сети не в системе то вносить туда доступ смысла никакого почти.
06:33
хорошо что хоть есть доступ на пе и можно сних дёргать инфу.
06:45
e_zombie: похожая ситуация - пока дают рулить в своём регионе, можно побаловаться, а если заберут руль - всё
06:48
а чтобы внедрить это официально на уровне хотя бы макрорегиона, надо либо быть соответствующим начальником, либо уметь их убеждать
06:48
доступ наверное всё равно у тебя останется при любом раскладе
06:49
да мы может и без всяких офиц бумажек. ПОТОМУ ЧТО ВСЕМ ПОХУУУУУУУУЙЙЙЙ!! лиж бы была вылизана попка вышестоящего начальника.
06:49
и да такой мелочи как софт у нас не опускаются.
06:50
была идея сделать кнопку "заебись" только для этого ничего не дали.
06:51
e_zombie, ты пишешь скрипты для серверов чтобы облегчить себе жизнь?
06:51
я стараюсь делать так чтобы этого не делать :)
06:52
ну почему?
06:52
задач достаточно мало где надо программить .
06:53
днс \ почтари \ фтп и тд работает само.
06:53
само не бывает
06:53
кто-то уже запрограммил значит
06:54
есть такая вещь как рутина, ее обычно и программят, чтобы не делать
06:54
поздно ;) я уже предумал
06:55
*передумал
06:56
_4ePTeHok, хотя можешь помочь
06:56
' Hostname: ISAM\n Location: BSZ\n Contact: noc\n Model: 7324 RU R4.0.2\n 7324 RU version: V3.52(TW.0) | 05/03/2006\n F/W size: 2679468\n MAC address: 00:13:49:AD:62:72\n System up time: 26(days) : 1:45:06\nBootbase version: V1.01(7324RU4.0) | 01/18/2005\n F/W build date: May 3 2006 16:08:24\nDSP code version: f2.33.0000\nHardware version: B1\n Serial number: 0Z0622022301\n'
06:56
вот это возвращает железка
06:57
почему этот regexp не вылавливает данные
06:57
Model:\s+7324\s+RU\s+(?P<hw_rev_1>\S+)\n.+Hardware\sversion:\s(?P<hw_rev_2>\w+)\n\s+Serial\snumber:\s(?P<serial>\w+)
07:02
.+ не ловит \n
07:02
у тебя до .+Hardware\sversion:\s несколько строк есть
07:03
Model: 7324 RU R4.0.2
07:03
7324 RU version: V3.52(TW.0) | 05/03/2006 вот это оно ловит
07:03
а дальше - перевод строки и тю
07:03
сделай отдельными регексами
07:04
там где кусок сплошняком идет можно объединить
07:08
. ловит перевод строки, если сказать re.DOTALL
07:10
хм, попробую так, потому что отдельные regexp не сработали
07:14
отдельные всегда работют
07:26
бред какой-то
07:27
в онлайн тестере regexp работает, в скрипте - нет
07:29
zi_rus, kodos офлайновый тестер. всегда работает
07:33
все, заработало
07:33
match на search поменял
07:34
эта хрень меня убивает
07:34
match, matchall, search
07:34
без поллитры не разберешся что зачем
07:35
серч да
07:36
собсно в коде чаще всего серч и файндитер
07:37
только теперь в другом косяк
07:38
<class 'noc.sa.interfaces.base.InterfaceTypeError'>
07:38
DictParameter: 'vendor'.
07:38
START OF TRACEBACK
07:39
чего ей не нравится
07:39
в других скриптах все так же вроде
07:42
пример вывода
07:42
[{'builtin': False,
07:42
'description': 'Opticin OS-242',
07:42
'number': 'None',
07:42
'part_no': ['OS-242'],
07:42
'revision': 'None',
07:42
'serial': '08:10:74:3A:74:0A',
07:42
'type': 'CHASSIS',
07:42
'vendor': 'OPTICIN'}]
07:42
обрати внимание на партномер
07:42
запринть r перед ретурном и сравни
07:47
а чего там олкотель специфичный какой то, что ты отдельный скрпт под него пишешь?
07:48
_4ePTeHok, да нет, оно вроде как надо возвращается... ять... надо списком возвращать, а не словарем
07:48
да там дслам
07:49
у него персональный профиль
07:49
меня прет, уже второй скрипт за сегодня запилил
07:50
во тебя накрыло
07:50
:)
07:51
когда на работу клшадешь болт и нихрена не делаешь уже две недели, от безделья и не таким займешься :)
07:55
а вот я докатился. Пишу вендовые сервисы на питоне)))
08:08
гадость какас (С) ДМБ
08:48
Dmitry1, а почему DOM Alarm - CRITICAL, а LInk Down - всего лишь WARNING?
08:52
не знаю. это не я писал для link down
08:53
Dmitry1, ну ладно, хрен с ним, помнишь мы обсуждали что в subject надо выводить больше информации. в аларме DOM Alarm я так и не вижу значений на которые он жалуется
08:54
так я вроде сделал
08:54
посмотри JSON файл
08:54
DOM exceeded the Rx power low threshold: Te1/29 (bb-kulibuna-1)
08:54
вот весь сабж
08:54
тут нету ни текущего значения показателя
08:54
ни предельного значения
08:54
ни даже того что ему не нравится
08:55
может там слабый сигнал
08:55
а может модуль перегрелся
08:55
а нет Rx power
08:55
ну тогда только уровни
08:55
"subject_template": "DOM exceeded the{% if sensor %} {{sensor}}{% endif %}{% if threshold %} {{threshold}}{% endif %} threshold: {{interface}}{% if description %} ({{description}}){% endif %}"
08:55
"body_template": "DOM exceeded the{% if sensor %} {{sensor}}{% endif %}{% if threshold %} {{threshold}}{% endif %} threshold: {{interface}}{% if description %} ({{description}}){% endif %}{% if ovalue %}, Operating value {{ovalue}}{% endif %}{% if tvalue %}, Threshold value {{tvalue}}{% endif %}",
08:55
в сислоге прилетает
08:55
Feb 6 07:18:59: %SFF8472-5-THRESHOLD_VIOLATION: Te1/29: Rx power low alarm; Operating value: -33.9 dBm, Threshold value: -18.4 dBm.
08:56
почему нету?
08:56
regexp кривой?
08:56
парсит он это или нет
08:56
interface Te1/29
08:56
ovalue -40.0 dBm
08:56
sensor Rx power
08:56
threshold low
08:56
tvalue -18.4 dBm
08:57
нет, regexp нормальный
08:57
Event Variables все отловлены
08:57
в теле самого ивента что пишет?
08:57
DOM exceeded the Rx power low threshold: Te1/29
08:57
DOM exceeded the Rx power low threshold: Te1/29, Operating value -40.0 dBm, Threshold value -18.4 dBm
08:57
это в overview
08:57
Ну так пишет ведь? И переменные все отлавливает
08:58
Что еще надо то?
08:58
а в гриде почему нет?
08:59
В гриде идут сообщения в сокращенном виде. Более развернутая информация идет в теле ивента
08:59
лять
08:59
зачем так
09:00
почему нельзя предоставить достаточную информацию в гриде
09:00
да нормально так: тебе даже говорят, что нижний порог, дальше уже можно открять событие, если интересно
09:00
у грида есть ограничение
09:00
по ширине
09:00
иначе распидорасит с прокруткой
09:01
а так не у всех мониторы такие широкие
09:01
там и так сейчас дозера инфы
09:01
Так вроде исторически сложилось. В теле самого ивента стараются побольше информации впихнуть. С форматированием, вытаскиванием нужных переменных и т.п.
09:01
lexus-omsk, у меня девятнашка с уебищным разрешением, надо просто убирать мусор вроде id и все будет влезать
09:02
Dmitry1 кстати, там дублирование получается, в теле: заголовок жирным и потом ещё то же самое, но обычным шрифтом
09:02
Это одинаковые "subject_template" и "body_template"
09:03
_4ePTeHok, если подумать то класс аларма тоже можно скрыть, это внутренняя информация, нам лишь нужен сабж, чтобы понять чтоже произошло, но сабж должен быть подробным (в разумных пределах)
09:04
fm/apps/event/templates/Overview.html
09:04
zi_rus: ну если класс убрать - тогда, наверное, да, влезет
09:05
time, duration, events, severity и subject - вот достаточные поля для работы, все остальное можно по-дефолту скрывать и отталкиваться от того что они скрыты
09:05
А фильтрация по классу как тогда?
09:06
и что? скрытие поля в гриде ее не отменяет
09:06
поиск вполне работает
09:06
а если ещё и severity убрать и смотреть только на цвет...
09:06
по дефорлту цвета крывые
09:06
severity можно оставить
09:06
а вообще у меня так и сделано, только ещё класс был, сейчас попробую без него
09:07
но в IBM Netcool так и есть цветовая индикацияб поля severity в гриде у них нет
09:07
для оператора перед монитором этого более чем достаточно
09:08
zi_rus: а ты сделай скриншот netcool'а
09:08
Ж)
09:08
забавная ситуация, в netcool есть алармы выделенные серым, они серьезные, но никто их не воспринимает, мы только по сабжу понимаем что это важно
09:10
dvolodin, я не предлагаю делать копию неткула, но серьезно, кому вперлась эта монговская id в гриде, класс более спорный, но по-моему его можно скрыть
09:13
ну скрой, я же не против
09:15
вопрос ко всем. У вас есть какая то привязка железок(конкретнее профилей авторизации, snmp-community) к префиксам в которых болтаются управляющие интерфейсы?
09:16
ну то есть 10.10.10.0/24 - ето cpe и такими то профилями
09:16
у нас по снмп в филиале ничего не котролится. нукроме какой то уйни из нижнего
09:16
8.8.8.0/22 - core и т д
09:18
я тут пишу просто дискавери объектов потихоньку
09:18
правила классификации интерфейсов нужно доделать
09:18
_4ePTeHok: логично же, что выделяются специальные префиксы под разные цели - ядро, по районам и т.д.... и это частично фигурирует в селекторах
09:19
вот прикидываю, стоит ли делать вохможность связки профиля авторизации с префиксом(или дескрипшеном в нем)
09:19
т е чтобы не перебором лупить железку
09:19
а по рулам каким то
09:19
хотя можно это конфигурируемым сделать вполне
09:20
вообще у нас есть такая штука как prefix table
09:20
есть да
09:20
только оно руками
09:20
а в ипаме - префиксы сами найдутся
09:21
сделал я там например подсеть под доступ - попал туда префикс, значит профиля для доступа буду пробовать для авторизации нового объекта
09:21
из core - другие профиля
09:25
А как сделать свой локальный beef repo?
09:25
(чтобы потом по нему тестировать)
09:26
Просто hg init в нужном место и в конфиг прописать его? Или можно просто каталог указать и не прописывать в конфиг?
09:26
и в etc/beef.conf его прописываешь
09:27
имена каталогов/файлов в репо имеют значение?
09:27
local/repo/sa/<name>
09:27
а файлы сами создаются по ./noc beef --import
09:28
в смысле, обязательно делать vendor/interface/guid.json ?
09:28
а пример можно этого --import
09:28
./noc beef --import -r my_repo <path1> ... <pathN>
09:29
он и делает структуру vendor/interface/guid?
09:30
ага, попробую.
09:30
спасибо
09:55
dvolodin: а коммитить в этом репо вручную надо?
09:59
не, оно при добавлении закоммитит
10:03
при добавлении чего куда? Сделал --import на всё что есть, все файлы в состоянии ?, hg log пустой.
10:07
и ещё, как ему объяснить, что спаннингтри может собираться действительно ДОЛГО, а то ругается в noc-activator.0.log что Trying o kill already dead thread
10:10
по ./noc beef -r <repo> --push закоммитится и выдавится все
10:25
а если вот так - проверяем ip по ипаму на присутствие рядом уже заведенных объектов в той же подсети
10:25
и пробуем ломиться к нему с их профилем
10:42
evg_krsk: таймауты скрипта крутятся
10:45
dvolodin: Дим, напомни мне патчи, которые ты мне высылал
10:45
10:45
а второй я не помню
10:56
dvolodin, я тут взбесился с утра, два скрипта аж запилил. закоммить если все нормально
10:59
:)
10:59
это дело хорошее
11:09
dvolodin: да вот что-то не нашел где нужный таймаут крутить
11:16
Сделал ./noc beef -r repo --push так оно всё закоммитило, запутило и самозабанилось на ожидании снятия блокировки свойм же процессом для пуша. Ну туууупое :-)
11:20
как я понимаю в модуле GIS пока ничего рисовать невозможно....
11:21
там и не нужно рисовать
11:21
рисуется в инвентори
11:21
посмотрел более детально интерфейсы в моделях
11:21
в гисе только настройки карт, слоев и т д
11:21
обнаружил, что dimensions.units у нас полностью дублирует rackmount.units
11:21
а как из инвентори энто все на карту?
11:22
обновляешься до упора в девелоп
11:22
наверное, из dimensions нужно units выпилить
11:22
создаешь PoP точку присутствуия нужного уровня и указываешь на карте где оно должно быть
11:22
все в инвентори
11:22
и уже в точку присутствуия железки складываешь в дереве
11:23
ок, попробую в девелоп заапдейтится
11:23
димерсион - это же для размеров...
11:23
зачем там юниты
11:23
юниты только для rack важны
11:23
это из ранней драфты пришло
11:24
размеры всего в 14 моделях проставлены
11:24
а у нас для трансивера интерфейс есть?
11:24
чтобы дальность там указать например
11:24
есть ли DOM и т д
11:27
чо это за 0 влан у тебя
11:28
4200 трейсил давно на lldp
11:28
и каталисты все перестали работать 3750
11:28
11:30
нет
11:30
а у меня их сотни
11:30
еще перестал работать длинк
11:30
11:30
ну оно как бы не критично, это ж инвентори
11:30
не снимет да
11:31
"неаккуратненько" (С)
11:31
а че там хоть sh idprom есть?
11:31
трансиверы подергать
11:33
добрый день, господа
11:33
кто-нибудь может подсобить с одним дельцем, касающимся валидации конфигов?
11:35
а именно: могу ли я создать ивент прямо из пайрула, чтобы он отображался в веб интерфейсе, если конфиг не соответствует каким-либо правилам? Или это не очень хорошая идея?
11:37
gborisov, теоретически можно, но несколько геморно, а идея как идея, сделаешь и сам увидишь
11:37
ufir кинь мне полный вывод sh ver в пасту
11:38
zi_rus, а не подскажешь как это можно реализовать?
11:40
надо создать alarm class
11:40
покопаться в коде и найти как поднимать аларм из скрипта
11:41
dvolodin я ещё как только rackmount сделали спрашивал, зачем в двух местах юниты, и кто-то мне сказал, что их уже выпилили из старого места
11:41
в kb и правда нет, а вот в старых моделях осталось, наверное
11:41
это самое геморное ибо из web классы создавать невозможно, только json пилить
11:42
gborisov а зачем, чем не устраивает письмо?
11:42
zi_rus, спасибо) но главная неопределенность как раз с тем, как поднять аларм из скрипта, я думал мб кто-то знает
11:43
ufir, попробую добавить
11:45
lexus-omsk, такая хотелка у отдела, эксплуатирующего сеть)
11:46
алярм сам поднимется был бы ивент и рулы
11:46
ну и классы соотв-е
11:47
lexus-omsk, на самом деле смысл есть, может быть даже штатно такую функцию ввести ибо письмо пришло ты сказал ага и стер его
11:47
тут вопрос куда пихать
11:47
а алрм будет висеть
11:47
а если политика поменялась
11:47
ты в валидатор внес изменения
11:47
и привет
11:47
тысяча писем в почте
11:48
ты их снес, на следующий день еще тысяча
11:48
через пару дней ты их уже не замечаешь, они сыпятся сплошным потоком
11:48
и потом хрен поймешь где поправлен конфиг, а где нет
11:49
а тысяча алармов лучше? ) политику применять надо после того, как на основной массе поправлено, как раз для проверки, где забыли
11:49
палка о двух концах
11:50
если применять после
11:50
то будет ругаться в процессе поправления
11:50
поэтому надо отключать проверку
11:50
на время перехода
11:50
а после - включать.
11:50
тысяча алармов будет висеть ровно до того момента пока не исправишь
11:51
_4ePTeHok, ты помнишь как оно включается и отключается
11:51
на каждой железке андо зайти и задать
11:51
т.е. пришло поручение, выполнил, отчитался, включил и контролируешь... хотя это вопрос организации процессов в компании, конечно
11:51
noc shell для трусов да
11:51
noc shell это хорошо, но железки различаются
11:51
не всегда можно херануть скриптом
11:52
а по аларму придет письмо и хорошо
11:52
ты прошелся, везде поправил
11:52
и смотришь, что не закрылось
11:54
у меня сейчас тухленькая валидация используется, и сотни свичей не наберется, знал бы ты как затрахали письма, через неделю на них уже внимания не обращаешь
11:54
и это я еще не все параметры и не на всех свичах проверяю
11:55
это палка о двух концах
12:07
создать ивент оказалось довольно просто
12:07
from noc.fm.newevent import NewEvent
12:07
NewEvent(timestamp=timestamp, managed_object=mo, raw_vars=data, log=[]).save()
12:08
я так понимаю, в raw_vars должен передаваться словарь, по которому этот ивент классифицируется, так?
12:09
from noc.fm.models import NewEvent
12:09
то есть
12:52
а никто не делал автопрописывание привязки MO - адрес в IPAM?
12:53
ну чтобы в ипам объект привязывался сам
12:53
зачем? нок вроде автоматом должен в процессе дискавери
12:54
если в профиле галко стоит?
12:57
у меня чот не привязывает
12:57
если на железке ip discovery нет
13:02
на самом деле он криво привязывает, но должен, это дело надо фиксить
13:02
я так считаю
13:02
или пируль костылять
13:02
я думаю это не сложно
13:03
вытащил из инвентори все L3 интерфесы, нашел адрес в ипам и прописал
13:03
и десяти строчек не будет
13:04
а там можно привязывать на 1 объект несколько адресов?
13:32
dvolodin, Дим, а если на железке нету ip_discovery = оно не будет синхронизировать свой менеджмент адрес с ипамом?(галка в профиле стоит)
14:21
а видно ли инфу по созданному аларму в веб интерфейсе? (то, что в классе описывается как body_template) если да, как посмотреть ее?
14:23
subject в таблице видно, а где body посмотреть?
14:54
gborisov, спроси Dmitry1, он тут магистр ФМ
14:54
_4ePTeHok, там это где ты хочешь привязывать несколько ip на объект
14:54
gborisov: двойной щелчек мышью на ивенте
14:55
Dmitry1, да говою, в сабже надо больше писать, а то прям как американский сериал, заканчивается все на самом интересном месте
14:57
оно и не надл ничего там видеть
14:57
body аларма в письме отсылается
14:58
письмо приходит один раз, а аларм можно обновлять
14:59
ладно, потерплю пока как есть
14:59
посмотрим что из этого выйдет
15:01
Dmitry1, а что мы можем сделать с такой ситуацией, две железки соединены, на одной кладем порт, а вторая начинает орать про слабый сигнал? тут причина и следствие очевидны
15:02
но опять же, без топологии оно не будет работать
15:02
это очевидно
15:02
давай рассчитывать про идеальный вариант
15:03
у нас пока FM не умеет "заглядывать", что находится на другом конце
15:03
а в чем тогда идея
15:04
у меня МЕ4924 себя так ведут, уже два аларма в ноке
15:04
идея в том, чтобы аларм DOM "out of threshold" обрабатывался с помощью pyrule
15:05
То, о чем я и говорю постоянно. Root cause слишком уж прямолинейный механизм
15:05
ну можно, придется пирули на всякие случаи записывать
15:05
про оам мы с тобой говорили
15:06
там тоже самое
15:06
Feb 6 16:11:41: %ETHERNET_OAM-6-RFI: The client on interface Te1/30 has received a remote failure indication from its remote peer(failure reason = remote client administratively turned off action = none)
15:06
пожалуйста
15:06
shutdown удаленного порта
15:07
Dmitry1, запишешь где-нибудь или issue создать? пара неклассифицированных сообщений
15:07
message": "Feb 6 16:08:41 192.168.81.76 : %SPANTREE-2-PVSTSIM_FAIL: Blocking root port Te1/29: Inconsitent inferior PVST BPDU received on VLAN 1007, claiming root 33775:0015.fa15.6100"
15:07
"message": "Feb 6 16:10:11 192.168.81.76 : %SPANTREE-2-PVSTSIM_OK: PVST Simulation inconsistency cleared on port TenGigabitEthernet1/29."
15:07
А самое мое большое жедание - вынести в пируль вот это уёбище:
15:07
"jobs": [
15:07
{
15:07
"job": "check_link",
15:07
"interval": 60,
15:07
"vars": {
15:07
"interface": "alarm.vars['interface']"
15:07
}
15:07
}
15:07
]
15:07
Dmitry1, еще хотел спросить: а как переменные, описанные в JSONe eventclasses и alarmclasses, передавать при создании нового ивента? В аргументе raw_vars какая-то особая структура должна быть или я могу их просто ключ:значение вкорячить?
15:07
Которое мне засырает логами весь НОК и все свичи
15:08
gborisov: не понял вопроса
15:08
Dmitry1, а для циски скрипт по снмп работает, я его даже не замечаю
15:10
Dmitry1, тебе надо два пируля для начала сделать 1) аларм указывает на аварию на другом МО (не важно, другой конец линка или что-то дальше) 2) аларм активен пока приходят сообщения от железки, по прекращении сообщений, аларм закрывается через ка
15:10
кое-то время
15:11
не-не
15:11
то уёбище, которое я выше выложил, нужно оформить в виде пируля
15:11
А его я могу спокойно выключить/включить
15:11
это третий вариант
15:12
ты напиши пируль и скажи что он дублирует этот функционал
15:12
а так просто выпиливать то что работает, это неправильно
15:14
это не то
15:14
пируль ты не можешь активировать по алярму
15:15
там же периодика только
15:15
хотя в триггере есть пируль
15:15
значит вру
15:24
Dmitry1, вот еще сообщение неклассифицированное
15:24
mpls_ldp[1044]: %ROUTING-LDP-4-DUP_ADDRS : 1 Duplicate address(es) advertised by more than one peer
15:26
У нас вроде есть класс "IP | Address Conflict", но оно хочет в параметрах IP адрес
15:27
Dmitry1, тут нюанс
15:27
это MPLS LDP жалуется
15:28
что где-то в сети две железки анонсят одинаковые адреса
15:28
это не обычный ip conflict
15:30
zi_home: в привате завтра пообщаемся
15:30
ok
15:38
Dmitry1, пока завтра не наступило, в скрипте get_inventory для длинка ты забыл в шапке поправить, там get_interfaces светится :)
16:04
Dmitry1: ты еще не ушел?
16:04
пичаль
16:04
а можешь себе где-нить записать?
16:05
правила брокейда на link up/down исправить бы неплохо, а то не подтягивается из инвентори нифига инфа
16:05
в правиле матчит ethernet x/y, а в инвентори интерфейсы просто x/y
16:06
если это ethernet из вынести за скобки - все сразу становится хорошо
16:07
хотя может я и неправ, может для фиберченела стоит оставить, но у меня дисковая полка втыкается напрямую в тазики, FC-свича нет, так что не знаю.
16:08
я даже не знаю, что с этим делать
16:08
но с другой стороны там не ironware, так что вполне нормальная правка
16:09
ладно, если вспомню завтра - json кину тебе исправленый. Ок?
16:09
mikevlz|2, а если наоборот? инвентори заполнить правльно?
16:09
Pref - чем выше тем главнее правило?
16:10
zi_home: ну знаешь, оно в ironware именует интерфейсы ethernet x/y или ethe x/y или просто x/y. Зависит от того, как смотришь на них
16:11
так что какой вариант правильный тут вообще фиг знает. А о том, что это - сотка, гиг или 10Г ты узнать можешь или по полному show interface ethernet x/y или в snmp
16:12
на мой взгляд правильно - когда можно однозначно определить интерфейс. У этих свичей нет путаницы как у кошек. Так что минимально достаточное x/y на мой взгляд правильно
16:13
а кто-нибудь пользуется extreme'вскими ящиками в связке с noc?
16:14
а то там скрипт не очень, я его вроде поправил
16:14
но как-то не до конца
16:14
и у меня дискаверятся только IP которые висят на интерфейсах самого extreme
16:14
а из arp-таблицы не дискаверится
16:14
и + маску сети определяет неправилно, хотя в дебаге видно что в mask ставится правильная маска
16:15
get_arp надо делать..
16:15
ээ
16:15
маска в л3 интерфейсах в инвентори должна быть
16:15
сейчас гляну
16:16
в инвентори маска 0
16:16
ну такая как на интерфейсе :)
16:16
16:16
24
16:16
26
16:17
30
16:17
ну и тд
16:17
я может куда не туда смотрю в дебаге
16:17
херня какая то
16:17
выложи в пасту ввывод дебага
16:17
пароль только закрась
16:17
уже делаю
16:26
16:32
с get_arp вроде понял в чем проблема
16:34
хотя нет
16:34
тоже почему-то не кушает
16:35
хотя regexp я вроде правильно поправил
16:35
pythonregex.com кажет что всё ок
16:35
16:37
не, всё ок уже с get_arp
16:37
забыл + вставить в regexp
16:43
_4ePTeHok, подскажи пожалуйста еще, когда я дергаю debug-script, результаты опроса не кладутся в БД?
16:57
наверное, проблема где-то тут
16:57
# Process IP
16:57
match = self.rx_ip.match(l)
16:57
if match:
16:57
mask = IPv4.netmask_to_len(match.group("mask"))
16:57
current["ip"] = "%s/%s" % (match.group("ip"), match.group("mask"))
16:57
continue
16:58
у меня кстати mask = IPv4 было закомментировано почему-то
16:58
17:13
ugenk, дебаг это дебаг, в базу ничего не попадет
17:24
а как запустить скрипт руками что бы в базу попало
17:24
какой скрипт?
17:24
дискавери нужно запускать
17:25
глобально, или в девелопе есть возможность персонально конкретные виды запускать
17:27
get_arp например хочу запустить
17:29
а discovery - это где в гуи
17:29
а, sa/managed objects
17:32
осталось разобраться с маской
17:38
так вроде правильная маска
17:38
я скрин выше постил
17:38
сеть/0 в ipam
17:39
хотя в дебаге всё вроде ок
17:39
17:42
магия прям
17:45
это не в ипам, это инвентори
17:47
ugenk, проверь такой момент, из noc shell сделай выгрузку, действительно оно /0 в базу ушло, для очистки совести, а то всякое бывает
17:48
а подскажи что конкретно
17:48
какую команду надо
17:50
./noc shell
17:50
from noc.inv.models import *
17:50
i = Interface.objects.filter(...)
17:51
pritn i
17:51
что а что вместо ... писать
17:51
имя устройства в кавычках?
17:51
попробуй варианты
17:52
enabled_protocols=["IPv4"]
17:52
managed_object
17:52
я не помню имя там или id надо указывать
17:54
>>> i = Interface.objects.filter(enabled_protocols=["IPv4"])
17:54
>>> print i
17:54
[]
17:54
>>> i = Interface.objects.filter(managed_object='extreme')
17:54
>>> print i
17:54
[]
17:55
ugenk,
17:55
mo = ManagedObject.objects.get(name="cat-77-12")
17:55
i = Interface.objects.filter(managed_object=mo)
17:56
но туда все влезет
17:57
ага, не влазит
17:57
>>> print i
17:57
[<Interface: extreme: 1>, <Interface: extreme: 10>, <Interface: extreme: 11>, <Interface: extreme: 12>, <Interface: extreme: 13>, <Interface: extreme: 14>, <Interface: extreme: 15>, <Interface: extreme: 16>, <Interface: extreme: 17>, <Interface: extreme: 18>, <Interface: extreme: 19>, <Interface: extreme: 2>, <Interface: extreme: 20>, <Interface: extreme: 21>, <Interface: extreme: 22>, <Interface: extreme: 23>, <Interface: extreme: 24>, <Interface: ex
17:57
treme: 25>, <Interface: extreme: 26>, <Interface: extreme: 27>, '...(remaining elements truncated)...']
17:57
а
17:57
я лох
17:58
SubInterface надо
17:58
тоже обрезает
17:58
>>> print i
17:58
[<SubInterface: extreme 1>, <SubInterface: extreme 10>, <SubInterface: extreme 11>, <SubInterface: extreme 12>, <SubInterface: extreme 13>, <SubInterface: extreme 14>, <SubInterface: extreme 15>, <SubInterface: extreme 17>, <SubInterface: extreme 18>, <SubInterface: extreme 19>, <SubInterface: extreme 2>, <SubInterface: extreme 20>, <SubInterface: extreme 21>, <SubInterface: extreme 22>, <SubInterface: extreme 23>, <SubInterface: extreme 24>, <SubInte
17:58
rface: extreme 25>, <SubInterface: extreme 26>, <SubInterface: extreme 27>, <SubInterface: extreme 28>, '...(remaining elements truncated)...']
17:59
In [19]: i = SubInterface.objects.filter(managed_object=mo, enabled_afi=['IPv4'])
17:59
In [20]: print i
17:59
[<SubInterface: cat-77-12 Vl 1007>]
17:59
ну или просто
18:00
for a in i:
18:00
print a.ipv4_addresses
18:01
нули выдает
18:01
[u'31.130.200.148/0']
18:01
[u'31.130.201.65/0']
18:01
ну и тд
18:01
значит действительно в базе криво
18:03
не должно быть такого
18:03
в общем да
18:03
IPv4.netmask_to_len(match.group("mask"))
18:03
в коде имеется ввиду что там будет маска (т.е. 255.255.255.0)
18:03
а приходит regexp
18:04
>>> from noc.lib.ip import IPv4
18:04
>>> IPv4.netmask_to_len("24")
18:04
0
18:04
>>> IPv4.netmask_to_len("255.255.255.0")
18:04
24
18:05
просто крипт вроде правильный результат возвращает судя по дебагу
Share this page
Share this page: