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: 16.09.2013
dvolodin #
05:44
сделал нумерацию строк при просмотре конфига
zi_home #
05:45
dvolodin, а admin/oper status в списке интерфейсов не хочешь начать рисовать?
dvolodin #
05:47
:)
05:47
и до них дойдем
zi_home #
05:48
просто мысль в голову пришла
05:48
админ статус можно замочком рисовать
05:49
заблокирован - есть замочек, разблокирован - нету
dvolodin #
05:49
http://fontawesome.io/icons/
05:49
выбирай любой
freeseacher #
05:49
zi_home, не прозрачно
zi_home #
05:49
типа как у change password
05:49
freeseacher, почему
05:51
по-моему, и прозрачно и логично и понятней чем если как везде будут галочка и крестик
05:54
freeseacher, ты только представь на сколько проще будет одним взглядом находить погашенные порты
dvolodin #
05:55
freeseacher: посмотри нумерацию строк
05:55
вроде нормально получилось
freeseacher #
05:55
zi_home, я честно никогда не пойду в нок что бы посомтреть состояние порта.
zi_home #
05:56
freeseacher, потому что в ноке этого нет, но когда я копаюсь в списке портов, эта информация очень облегчила бы жизнь, а отображение ее удобным способом было бы еще лучше
06:00
freeseacher, я даже больше скажу, если бы, я надеюсь что эту функцию расширят, сначала просто отображать эти статусы, потом научиться обновлять их по сообщениям приходящим по снмп/сислог, а потом чтобы обновленная информация отправлялась на кл
06:00
иент через пуш, и это уже действительно получится система управления и мониторинга
dvolodin #
06:00
да там рефрешить достаточно раз в минуту
06:01
хотя
06:01
можно сделать коллекцию для статуса интерфейсов
06:01
и действительно обновлять по syslog'у и результатам опросов
zi_home #
06:01
не скажи, если кто-то что-то делает и просит последить за линком, то эта информация нужна online
dvolodin #
06:02
я пока не могу оценить, насколько websocket испортит всем жизнь
06:02
как минимум потребуются последнии версии nginx
zi_home #
06:02
фича бранч для тестов
dvolodin #
06:03
давайте пока не будем плодить бранчи сверх меры и допилим sa-managedobject
06:04
я победил nvd3, теперь умею рисовать графики
06:04
нужно все это вместе запилить с профилями интерфейсов, чтобы добавлялось автоматом
zi_home #
06:05
не только профилем но и персонально дл якаждого интерфейса
dvolodin #
06:05
там нужно что-то вроде monitoring profile
zi_home #
06:12
mikevlz, mikevlz|2, кто-нибудь из вас тут?
mikevlz #
06:13
моя тут
zi_home #
06:15
mikevlz, не сложно будет помочь с NOC-1148? мне бы хотя бы с regexp чтобы ключевые параметры положить в переменные, а дальше с питоном я уже сам выдерну нужное
mikevlz #
06:19
какая поебень....
zi_home #
06:19
да
mikevlz #
06:22
тебе что надо переменные с тегом/именем влана и маски forbidden + tag?
zi_home #
06:23
тег, имя, enab/disab, и маска с --U---
06:24
там где FXXX.. это не надо, это шлак
mikevlz #
06:25
это не шлак. Это запрет динамическому роутингу вланов вешать туда этот влан
zi_home #
06:26
в ноке такого понятия нет на сколько я знаю, и у нас он тоже не используется, так что для меня это шлак, если в ноке все же есть куда это сохранить, то можно и его
06:26
одним больше, одним меньше
mikevlz #
06:38
zi_home: [ ]*(?P<vid>\d+)[ ]*(?P<vname>[A-Za-z0-9\-\.]+)\n([ 0-9]+)\n[ ]+(?P<vstatus>enabled|disabled)[ 0-9]+\n([ \-xf]+)\n[ ]+(?P<portmask>[ \-tu]+)
06:38
попробуй так
06:38
у меня вроде матчит все твои вланы
06:39
N: normal к чему относится?
zi_home #
06:39
а я хз, говорю что это шлак
mikevlz #
06:39
там может быть Fixed/Forbidden/Normal? или Normal/Tag/Untag?
zi_home #
06:39
первое
06:40
F/X/N
mikevlz #
06:40
тогда... [ ]*(?P<vid>\d+)[ ]*(?P<vname>[A-Za-z0-9\-\.]+)\n([ 0-9]+)\n[ ]+(?P<vstatus>enabled|disabled)[ 0-9]+\n([ \-xnf]+)\n[ ]+(?P<portmask>[ \-tu]+)
06:40
re.multiline|re.ignorecase
zi_home #
06:41
mikevlz, спасибо, попробую, закину пока для истории это в issue, чтобы не потерять
mikevlz #
06:41
ну и иметь в виду, что из портмаску надо будет разбить на две по пробелу. до пробела абон порты, после - магистраль, если я прально понял
zi_home #
06:42
ну да, слушай, а сразу в regexp н еполучится их в разные переменные закинуть?
06:42
там только пробелом разделены, должны легко матчиться
mikevlz #
06:45
[ ]*(?P<vid>\d+)[ ]*(?P<vname>[A-Za-z0-9\-\.]+)\n([ 0-9]+)\n[ ]+(?P<vstatus>enabled|disabled)[ 0-9]+\n([ \-xnf]+)\n[ ]+(?P<portmask>[\-tu]+)[ ]*(?P<uplinkmask>[\-tu]*)
zi_home #
06:47
ок, спасибо, чего это я сам не допер \n использовать в regexp, попробую
mikevlz #
06:47
но работай только с именованными группами
06:47
и эта... если dotall сделаешь, то \s будет матчить еще и перевод строки
e_zombie #
06:50
с утречком. обновляться можно или чтото адово поломали.
06:50
а не. надо обновляться. починили теги
08:12
UNHANDLED EXCEPTION (2013-09-16 12:14:07.519722) Working directory: /opt/noc <class 'django.core.urlresolvers.NoReverseMatch'> Reverse for 'css' with arguments '()' and keyword arguments '{}' not found. START OF TRACEBACK ------------------------------------------------------------------------
RudW0lf #
08:17
Утро доброе
zi_home #
08:18
обедать уже пора, утро кончилось давно
08:19
однако полдень
mikevlz #
08:27
у него вообще полночь может быть
08:27
не все же по MSK/MSD живут
zi_home #
08:29
я в курсе, это был легкий стеб, надо видимо смайлы расставлять
08:30
даже не стеб, а просто шутка такая
mikevlz #
08:52
<sarcasm>
zi_home #
08:54
mikevlz, слушай, я вот про regexp, там в начале вывода идет заголовок, он не будет мешать работе или его надо как-то исключить из строки к которой применяем regexp?
mikevlz #
08:54
я вместе с заголовком загонял...
08:54
re-try.appspot.com
08:54
зайди, потесть
zi_home #
08:56
попробовал, сработало, остается тогда еще проблема
08:57
mikevlz, ты не знаешь какой-нибудь питоновской функции чтобы правильно разделить этот вывод на блоки, чтобы скармливать regexp'у
08:58
\n ведь раскидает все по строкам, и это не подходит
08:58
а как еще, там ключевых слов нигде нет
mikevlz #
08:59
есть функция findall
08:59
она дает итерируемое.
zi_home #
08:59
а это как?
mikevlz #
08:59
то есть по ней можно сделать for
zi_home #
09:00
она используется где-нибудь в профилях?
09:00
можно скрипт посмотреть или пример какой?
mikevlz #
09:00
посмотри get_interfaces и get_vlans разные
09:00
я ща навскидку не помню
zi_home #
09:01
у джунипера нашел в get_interfaces
mikevlz #
09:01
кушай наздоровье =)
09:02
эта функция возвращает массив матчей
09:02
или как-то так...
zi_home #
09:02
ммм
09:02
это стандартная функция?
09:02
похоже да, почитаю доку про нее
09:15
mikevlz, я тебя еще немного поспрашиваю, а вот это нормально что эта хреновина сделала так что
09:15
('430', 'test', ' 1 2 3 4 ', 'enabled', ' XXXFXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX FF', '---U--------------------------------------------', 'TT')
mikevlz #
09:15
а что ненормального?
zi_home #
09:15
я к тому что почему она взяла все, а не только переменные
mikevlz #
09:15
она взяла группы...
zi_home #
09:15
vid vname etc.
09:16
то есть смысла в названиях переменных как бы и нет
mikevlz #
09:16
там есть еще другие функции, которые дают возможность искать кучу матчей
09:16
ну кагбе нет
09:16
получается
09:16
=)
09:16
я же не настоящий сварщик, а так... каску взял погонять
zi_home #
09:17
конечно не очень хорошо что кривой код будет, но в принципе работать будет
mikevlz #
09:18
он не кривой... это Magna cum nada
dvolodin #
09:18
zi_home: лишние группы можно убрать
09:18
замени (…..) на (?:……)
mikevlz #
09:18
если ты постараешься, то вместо findall найдешь какую-нить finditer...
09:19
или еще какой итератор по матчам, который будет только именованные группы выдавать
dvolodin #
09:19
for match in rx.finditer(....):
zi_home #
09:19
mikevlz, я видел в доке finditer, попробую, если так говорите
mikevlz #
09:19
эстет хренов :)
zi_home #
09:21
да какой из меня эстет, говнокодер просто, смысл в том чтобы написать скрипт который не придется потом за меня переделывать
09:21
ну или хотя бы минимальными фиксами отделаться
09:21
>>> for a in re.finditer(rx_vlan, v):
09:21
... print a
09:21
...
09:21
<_sre.SRE_Match object at 0x808adcb28>
09:21
<_sre.SRE_Match object at 0x808adca50>
09:21
<_sre.SRE_Match object at 0x808adcb28>
09:21
вот это что такое
09:22
опять история как с генераторами
mikevlz #
09:22
это матчи
dvolodin #
09:22
match.group("name")
09:22
match.groups()
09:22
match.groupdict()
zi_home #
09:22
о
09:22
так лучше
09:23
get_vlans получится сейчас
09:23
потом в get_switchport его мутирую
dvolodin #
09:28
одним скриптописцем больше
09:28
:)
mikevlz #
09:28
обозвал так обозвал
zi_home #
09:32
http://pastebin.com/BKnv4MDT
09:32
где косяк?
09:32
global name 'rx_vlan' is not defined
09:32
START OF TRACEBACK
09:32
24 ==> for match in re.finditer(rx_vlan, v):
09:33
копипастил половину из других скриптов
mikevlz #
09:34
self.rx_vlan? хотя хз... или определение rx_vlan затащи в def execute
zi_home #
09:36
да, так помогло
09:36
self...
09:37
скажите алилуйя, он заработал
RudW0lf #
10:06
Хм
10:06
а из за чего такое может быть?
10:06
2013-09-16 14:07:09,397 Daemon noc-notifier[#0] started as PID 53136
10:06
2013-09-16 14:07:19,407 noc-notifier[#0]: Heartbeat lost. Restarting
10:06
2013-09-16 14:07:19,407 noc-notifier[#0]: killing
10:06
2013-09-16 14:07:20,409 noc-notifier[#0] daemon is terminated with status 0
mikevlz #
10:07
демон недотягивается до пид-файла. Т.к. у пидфайла не обновляется время - считается, что демон завис
10:07
его прибивают, запускают заново
10:07
отключи heartbeat
zi_home #
10:54
mikevlz,такой вопрос
10:54
port name tel
10:54
---- -------------------------------- ----------------
10:54
1 1test fds 4332
10:54
2 test2 -
10:55
вот такой результат
10:55
пытаюсь порт и дескрипшен достать
10:55
[ ]*(?P<port>\d+)\s(?P<description>.*)\n
10:55
но так не работает
dvolodin #
10:55
zi_home: посмотри функцию parse_table
zi_home #
10:56
dvolodin, это в ноке?
10:56
или стандартная
dvolodin #
10:56
в noc.lib.text
10:56
она спасет тебя от ужасов скотоложства
zi_home #
10:57
это гуд, только экспериментировать сложнее, на живую придется
dvolodin #
10:57
а чего там эксперементировать
10:58
выдирай repr из debug-script
10:58
и в ./noc shell играйся
zi_home #
10:59
там и играюсь
11:00
dvolodin, посмотри NOC-1153, нок трейсится на ровном месте
11:02
шикарная штука parse_table
RudW0lf #
11:04
[vv
11:04
хмм
11:04
тогда как можно попробовать отладить нотификации
11:04
у меня оони то отсылают то нет
dvolodin #
11:10
zi_home: ага
11:10
в NOC'е много таких вот вкусняшек
11:10
parse_table твою табличку в два плевка драконит
11:10
как раз по этой полоске с минусами
zi_home #
11:11
да, я понял что все на минусы завязано
dvolodin #
11:12
ага
11:12
но результат хороший
zi_home #
11:16
dvolodin, как будет правильней, для get_switchport, на железке настройки делаются в два этапа, сначала на порту настраивается pvc и влан, а потом влан еще привязывается к порту
11:17
и одну часть можешь забыть и работать не будет
dvolodin #
11:20
ты же не конфиг анализируешь
11:20
вывод команд какой?
zi_home #
11:21
> adsl pvc show
11:21
port vpi vci pvid priority DS/US vcprofile
11:21
---- --- ----- ---- -------- --------------------------------------------
11:21
1 8 35 900 0 DS_4096/US_4096
11:21
2 8 35 733 0 General/General
11:21
а другой это как в issue с вланами
11:22
я например могу влан создать и на все порты его Untag сделать, но pvc создать только на нужные
11:24
да, так наверно правильней
dvolodin #
11:24
там бы по хорошему еще в get_interfaces возвращать vpi и vci
11:25
если уж мы в DSL лезем
zi_home #
11:26
ну да наверное
dvolodin #
11:27
подумай тогда на IGetInterfaces
11:27
как его расширить
11:28
у нас там явно не хватает encapsulatio
zi_home #
11:28
ну а какие есть варианты
dvolodin #
11:28
ether, ppp, hdlc, ....
zi_home #
11:28
атм, pon, 802.1q, 802.1ad
dvolodin #
11:29
в общем подумать нужно, как DSL порты в общую модель класть
ufir #
11:30
или вообще не класть
zi_home #
11:31
ufir, у вас что, дсламов нет?
11:31
кто-то тут хуавеевские дсламы вспоминал
11:31
а еще кто-то зуксели
11:31
технология умирает, но будет еще долго существовать
dvolodin #
11:33
да что-то паршиво оно умирает
11:33
для полноты картыны нам нужно положить DOCSIS и *DSL на общую модель
ufir #
11:33
я не об этом
11:33
там обычно абоненты живут
dvolodin #
11:34
ufir: а давай о страшном поговорим
11:34
скажем, о TR-069 :)
ufir #
11:34
о спаннинг-три ?
11:34
а..
zi_home #
11:34
у кого-то еще доксис живой есть?
dvolodin #
11:34
zi_home: у Dmitry1
ufir #
11:34
я свой вырубил недавно
11:34
там полтора клиента было
zi_home #
11:35
у нас в городе говорят у РТ тоже есть полтора клиента на доксисе
dvolodin #
11:36
а у нас Акадо
11:37
на самом деле я про то, что возможна кошмарная ситуация, когда абонентские CPE'шки окажутся в NOC
11:37
хотя бы в силу неработающего нормально TR-069
zi_home #
11:37
не окажутся, они уже у нас есть, маленькие свичи для разбора транка, вот эти дсламы
dvolodin #
11:38
ну тогда нужно нормально моделировать их
11:38
и в базу класть
zi_home #
11:39
dvolodin, вы пока думайте, а я буду скрипт без vpi/vci рисовать, мне сейчас надо
dvolodin #
11:43
ok
11:43
добъешь сам?
zi_home #
11:44
кого? get_... думаю да, а интерфейсы нока вы как-нибудь без меня
dvolodin #
11:48
а что ты в итоге вообще получить хочешь?
zi_home #
11:48
чтобы все мое оборудование было в нок, чтобы я мог легко по номеру влана узнать куда он уходит
11:49
сейчас если он уходит на дслам я этого не узнаю, только телепатически
11:49
плюс для новой схемы с q-in-q это вообще большой головняк
11:50
плюс, если у меня будут интерфейсы дслама в ноке, я смогу сниппетами и скриптами с ними работать как сейчас работаю с каталистами
mikevlz #
11:51
ахтоматизатор
11:51
почетный
zi_home #
11:52
я вообще ставил нок только чтобы он собирал конфиги и вести ip адреса
dvolodin #
11:52
:)
zi_home #
11:52
а сейчас это второй план перед такими автоматизациями
dvolodin #
11:52
а потом он захавал власть над миром
zi_home #
11:53
да, это наркотик, с него не слезешь
11:53
никто такого больше не умеет
11:54
dvolodin, черт с ними с vci, подумай дальше про vpls
dvolodin #
11:54
дай доделать managed object'ы
11:54
а то у меня в голове еще performance management крутится и inventory
11:55
inventory -- терминальная фаза
vovan888 #
11:55
готов помочь с инвентори
11:55
мне для полного счастья в ноке не хватает инвентори и ГИС
dvolodin #
11:55
но сначала нужно восстановить функционал скриптов и сниппетов
zi_home #
11:55
ГИС это очень больная тема
11:56
vovan888, а что ты можешь? писать код?
vovan888 #
11:57
да
11:57
правда мои патчи не коммитят нифига
11:57
ну да и ладно
zi_home #
11:57
коммиты достигаются непрерывным пиннанием
11:57
:)
vovan888 #
11:58
я уже хотел было сам начать инвентори делать, чтобы вести учет не только активки но и пассивки
11:58
но может у отца основателя есть уже наработки
zi_home #
12:00
vovan888, да, тут лучше согласовать, чтобы не пропало даром и в проект можно было код внести если не жалко
12:00
вот только он убежал
vovan888 #
12:01
ага, сразу убежал :)
zi_home #
12:02
еще вернется, куда он денется
e_zombie1 #
12:03
опять слать лучи? :)
zi_home #
12:11
e_zombie1, шли коммиты
12:11
народ, из оставшихся, кто сможет пару скриптов закоммитить, если я выложу?
12:17
лес рук, видимо придется подождать, ну ничего, скриптов все равно еще нет
e_zombie1 #
12:21
я могу тока голых девочек подкинуть
zi_home #
12:22
смотри, забанят нок за такое
e_zombie1 #
12:22
за это не забанят .
12:22
все постановочное
12:23
https://pp.vk.me/c9488/v9488151/1ebb/ho-o_rtSdHA.jpg
12:23
а вот за такое могут. если не разберутся :)
12:23
https://pp.vk.me/c316726/v316726151/6ea7/fQFL8lx6Sbw.jpg
12:24
https://pp.vk.me/c9488/v9488151/1ecf/BOS15UqQySM.jpg
zi_home #
12:24
ты думаешь они там в чем-то хотят разбираться
e_zombie1 #
12:24
https://pp.vk.me/c9488/v9488151/1ed9/jifTuALqY8A.jpg
12:25
в пятницу после работы снял.
zi_home #
12:25
ну и развлечения у вас по пятницам после работы, у нас все больше бухают
e_zombie1 #
12:31
ну каждый сам по себе.
sizziff_ #
12:31
девушка ничего :)
e_zombie1 #
12:31
да и не бухают у нас. потому что гавно работа.
mikevlz #
12:32
zi_home: а у них кто бухает - того привязывают и фотографируют :)
12:32
борьба с пьянством... бессмысленная и беспощадная
e_zombie1 #
12:32
все съёбвапют по звонку
zi_home #
12:33
e_zombie1, если бы я не бухал, давно бы уволился, зарплатная депрессия угнетает, хоть по пятницам удается это забыть
mikevlz #
12:33
zi_home: до следующей зарплаты?
zi_home #
12:33
ну не на столько
mikevlz #
12:34
ну это может говорить об одной из двух вещей... или много пьешь, или маленькая зарплата
sizziff_ #
12:34
или маленькая зп потомучто поъешь
zi_home #
12:35
не потому что, но маленькая
12:35
это угнетает
12:35
а деваться некуда, все говорят езжай в мск
e_zombie1 #
12:35
а у нас уже и такого нету.
mikevlz #
12:35
и тут возникает философский вопрос: а большая или нормальная ЗП это сколько?
zi_home #
12:36
это когда хватает
mikevlz #
12:36
такой же философский ответ
zi_home #
12:36
такой же философский ответ
mikevlz #
12:36
баянишь
12:37
zi_home #
12:37
доля сукенды
e_zombie1 #
12:37
ну когда у ведущего инженера она почти всего в полтора раза больше чем у грузчика на рынке под окном. это как бы намекает.
mikevlz #
12:37
у меня кажет 2 секунды разницы
zi_home #
12:38
mikevlz, это задержка сервера, ответы у меня на экране появились почти одновременно
12:39
e_zombie1, меня еще напрягает что программерам в разы больше платят
mikevlz #
12:40
особенно энурезникам?
zi_home #
12:40
ась?
mikevlz #
12:40
да я адин-эс энурезом зову
12:40
звучит похоже :)
e_zombie1 #
12:41
ну для программера в целом не так обидно. они типа творцы. хотя некоторых надо усыпить чтобы не писали говнокод, но всёже
zi_home #
12:41
про них не знаю, но вроде у них меньше чем у других, по крайней мере не самая высокая это точно
mikevlz #
12:41
это потому что расплодились и сбили цену.
e_zombie1 #
12:42
у нас счас по всему городу билборды зовут к нам работать. показательно.
zi_home #
12:42
e_zombie1, как тебе сказать, творец это архитектор программного продукта, а программер это лишь программер
mikevlz #
12:42
профессионал там стоит один хрен дорого. К тому же зачастую только почасовая/посуточная оплата :)
e_zombie1 #
12:43
zi_home: ну я тут больше не по профессии а о как профессионале своего дела. нубъё понятно что не получает золотые горы.
mikevlz #
12:43
собрались старпёры...
12:43
косточки молодежи обмывают
zi_home #
12:43
mikevlz, только их профессионал как бы все равно дороже сетевика выходит, а ты например учти стоимость косяка программера или сетевого инженера
mikevlz #
12:44
учел
e_zombie1 #
12:44
ну кому что надо .
zi_home #
12:44
программера тестеры прикрывают, а твой косяк за сотни километров может быть
12:44
или всю сеть положит и бизнес встанет
12:44
ответственность однако
12:44
за нее принято платить
mikevlz #
12:45
залететь на нарушении налогового кодекса гораздо хуже, чем пол города оставить без интернетов. За НК можно и статью УК словить, а из полгорода десяток отключится и все. Остальные быстро забудут
zi_home #
12:45
вот только у нас почему-то не принято
e_zombie1 #
12:45
забей. не стоит меряться профессиями.
12:45
это неконструктивно
zi_home #
12:46
mikevlz, это не только интернеты
mikevlz #
12:46
ну ладно, триппер плей всем положить
e_zombie1 #
12:46
я вот думаю как бы мне карты дорисовать между железками с разными протоколами.
mikevlz #
12:46
воип до сих пор не полноценная телефония.
12:46
e_zombie1: я по-наркомански сделал
zi_home #
12:46
e_zombie1, руками, если не много
mikevlz #
12:47
я сравнивал вланы на незалинкованых поднятых интерфейсах. Там где набор вланов совпадал - добавлял в кандидаты
12:47
оно, правда, много false-positive генерирует
zi_home #
12:47
это очевидно
e_zombie1 #
12:48
это то понятно. но наркомания не есть правильно
zi_home #
12:48
mikevlz, про питона
12:48
>>> print r
12:48
[{'interface': 1}, {'interface': 4}]
mikevlz #
12:48
если есть еще какие отличительные особенности - стоит их учитывать. Например, влан управления(должны быть одинаковые сетки)
zi_home #
12:48
как к interf 4 добавить untag 1
mikevlz #
12:51
r[1].update({'tag':4095})
12:51
попробуй так, если я правильно тебя понял
zi_home #
12:52
mikevlz, да так сработало, но немножко по-другому хочется, чтобы выбирать элемент не по номеру, а по содержанию
mikevlz #
12:56
хз тогда...
12:56
смотри методы работы с диктами
zi_home #
13:00
или придется логику скрипта переделывать
e_zombie1 #
13:41
я сейчас попробовал добавить линк и у меня крашнулось. это так и должно быть?
zi_home #
13:59
по-моему для тебя это уже становится нормой
15:20
не, get_switchport взорвал мне мозг
mikevlz #
15:21
он такой....
15:21
тебе нужно закусить энергетик молотым кофе...
15:21
тогда ты увидишь время и поймешь get_switchport. С get_interfaces сложнее =)
zi_home #
15:27
да, я тут придумал как упростить
15:27
get_interfaces не сложнее
mikevlz #
15:27
халявщик :)
zi_home #
15:27
вопрос такой
15:28
я вот не пойму как можно вланы добивать в список
mikevlz #
15:28
в какой список?
zi_home #
15:28
список тегированных
15:29
вот я прошелся и увидел что на этом порту 456 влан тегированный
mikevlz #
15:29
ну...
zi_home #
15:29
потом прошелся еще раз, 123 влан тоже тегированный
mikevlz #
15:29
и?
zi_home #
15:29
как в словарь добавлять
mikevlz #
15:29
да никак не добавлять...
zi_home #
15:30
как я сделал, он меня выругал
15:30
{'802.1Q Enabled': True, 'interface': 'enet1', 'tagged': '900'},
15:30
{'802.1Q Enabled': True, 'interface': 'enet2', 'tagged': '900'},
15:30
{'802.1Q Enabled': True, 'interface': 'enet1', 'tagged': '901'},
15:30
{'802.1Q Enabled': True, 'interface': 'enet2', 'tagged': '901'},
mikevlz #
15:30
прально, надо возвращать список в словаре
zi_home #
15:30
хотя выругал кажется за другое
15:30
так вот в чем и вопрос
15:30
значит сначала надо сформировать список
15:31
а потом добавлять в словарь
15:31
но как
mikevlz #
15:31
посмотри или брокейд иронварь или хп прокурву9ххх
zi_home #
15:31
там ведь получается первый порт второй порт для каждого влана
mikevlz #
15:31
там в гет_интерфейсес по вланам бегают
15:32
оно там ебанутое, я его не понимаю, если честно :)
zi_home #
15:32
копаться в чужом скрипте, да еще когда это get_interfaces, можно мозг по второму разу взорвать
mikevlz #
15:33
но, если есть parse_table, то может есть еще join_table...
15:33
хотя не...
zi_home #
15:33
if ifc in tagged:
15:33
tagged[ifc].append(vlan)
15:33
else:
15:33
tagged[ifc] = [vlan]
15:33
else:
15:33
untagged[ifc] = vlan
mikevlz #
15:34
да
15:34
оно
zi_home #
15:34
append хорошо, это я знаю, вернее знал и забыл, сейчас вспомнил, но вопрос в другом
15:35
два интерфейса, значит два списка
15:35
хоть я и пишу скрипт для профиля который фактически для одной железки
15:35
но интерфейсов может быть и больше
mikevlz #
15:35
при любом количестве интерфейсов - всего два списка. Список тегированных вланов на интерфейсе и список не тегированных
zi_home #
15:36
нет
15:36
я про тегированные
15:36
на каждый порт по списку
mikevlz #
15:36
ёпт...
15:36
да, и все это в списке
zi_home #
15:36
вот я иду по списку вланов
15:36
для каждого влана я определяю, тегирован он на этом порту или нет
15:37
на этом и на следуюущем
15:37
в итоге мне за один проход надо создать 2 списка
15:37
а это две переменных куда надо все записать
mikevlz #
15:37
это один список
15:37
посмотри код выше
zi_home #
15:38
нет
15:38
список на каждый порт
15:38
или делать несколько проходов
15:39
сначала делать список тегированных вланов для первого порта
15:39
сделал, записал, обнулил
15:39
потом для второго
15:39
но это не оптимально
15:39
или похер?
mikevlz #
15:40
tagged =[]
15:40
untagged = []
15:40
for v in vlans:
15:40
port=1
15:40
for p in portmask:
15:40
if p='T':
15:40
tagged[port]+=[v]
15:40
if p=='U':
15:40
untagged[port]+=[v]
15:40
port+=1
15:41
P=='T'
15:41
смысл понятен?
zi_home #
15:41
сейчас осознаю
mikevlz #
15:41
цикл по вланам.
15:41
в каждом влане идешь в цикле по портам.
15:42
если порт тегирован в этом влане - добавляешь тег влана к списко tagged для этого порта
15:42
если не тегирован - к Untagged
zi_home #
15:43
tagged[port]+=[v] - вот эта комбинация интересная
mikevlz #
15:43
в зависимости от железки, если порт антегом в одном влане и ни в одном из вланов не тегирован - он аксесный
15:43
эта комбинация - конкатенация списков. Тот же аппенд.
dvolodin #
16:02
zi_home: если тебе просто список vlan'ов держать - используй set
16:02
vlans = set()
16:02
vlans.add(10)
16:02
vlans.add(496)
16:02
....
zi_home #
16:04
нет, ну смотри
16:04
эта хреновина отдает список вланов
16:05
я перебираю этот список и записываю на каких портах каждый влан тегируется
16:05
как это делать?
dvolodin #
16:06
set и dict
16:07
тебе что нужно в итоге
16:07
какие vlan'ы на порту или какие порты в vlan'е?
zi_home #
16:08
это не мне, а как ноку нужно
16:08
как я понял
16:08
порт и список
16:08
порты во влане у меня фактически на руках
16:10
я знаю, длин тоже для каждого влана возвращает список портов, но там такой наркоманский скритп, я его не понял
dvolodin #
16:10
get_swithcport возвращает список интерфейсов
zi_home #
16:10
а для каждого интерфейса список вланов
dvolodin #
16:11
один untagged и список vlan'ов
16:11
а ты читаешь в обратном порядке?
16:11
vlan и список интерфейсов, или как?
zi_home #
16:11
нет, у меня есть влан и список интерфейсов их железка так отдает
16:12
я пытаюсь обратное преобразование сделать
16:12
только не говори что у тебя и на это есть функция :)
dvolodin #
16:14
тогда делаешь примерно так
16:14
from collections import defaultdict
16:14
....
16:15
tagged = defaultdict(set)
16:15
….
16:15
for v in vlans:
16:15
for i in tagged_interfaces:
16:15
tagged[i].add(v)
zi_home #
16:16
gj[j;t yf
dvolodin #
16:16
на выходе получаешь в tagged для каждого интерфейса set vlan'ов
zi_home #
16:16
похоже на sa/profiles/DLink/DxS/get_switchport.py
dvolodin #
16:16
lf
16:16
да
zi_home #
16:17
попробую второй заход
dvolodin #
16:18
тебе развернуть надо все
16:18
defaultdict -- он как dict работает
16:18
только если интерфейс еще не в словаре, он вернет тебе пустой set
16:18
или как вариант
16:18
tagged = defaultdict(list)
16:18
....
16:19
tagged[i] += [v]
16:19
тогда там список будет
zi_home #
16:27
dvolodin, дескрипшен для get_switchport обязателен?
dvolodin #
16:27
нет
zi_home #
16:28
хорошо, иначе пришлось бы отдельную команду выполнять
dvolodin #
16:31
get_switchport -- это ранний вариант get interfaces
16:32
собственно, для простых свичей get_interfaces делается как раз из get_switchport
zi_home #
16:55
dvolodin, а untagged все еще только один или тоже список можно?
dvolodin #
17:15
один
zi_home #
17:19
печаль, про длинки тебе уже говорили, на этом дсламе тоже может быть несколько
dvolodin #
17:20
а смысл?
17:20
жопой тоже можно петь
zi_home #
17:23
dvolodin, магия такая, я могу на один адсл порт с разными pvc разные вланы проключить и все они будут untag, не говоря о том что от лени просто не буду включать тегирование на втором аплинке ибо использую всего один
17:24
приаатчил два скрипта к NOC-1148
17:34
и кстати, такое у нас есть причем не в одном месте, а вполне регулярно
dvolodin #
17:50
но они у тебя будут untagged для конкретного vpi/vci, так?
17:50
тогда никакого криминала тут нет
17:50
добавляем vpi/vci как параметры SubInterface
zi_home #
17:51
ну да, но вот что есть то есть
dvolodin #
17:51
и будет у тебя несколько сабов с разными vpi/vci и каждый со своим untagged
17:51
:)
zi_home #
17:51
ммм
dvolodin #
17:51
никакого криминала, никаких SMS
17:51
на самом деле это действительно разные сабы
zi_home #
17:51
надо что-то с get_interfaces кстати делать для этого профиля
dvolodin #
17:52
не надо
17:52
ты и так впишешь все нормально
zi_home #
17:53
для switchport это выглядит все печально, там же нет сабов
dvolodin #
17:53
там - да
zi_home #
17:54
как же он будет дискаверить
17:55
может этот скрипт и не нужен?
dvolodin #
17:56
для discovery - не нужен
17:56
он для тупых свичей
17:58
так что насчет vpi/vci?
zi_home #
17:58
ну пусть будет раз написан, кстати, с точки зрения л2 это тупой свич
17:58
а что vpi/vci
dvolodin #
17:59
можно в enabled_afi разрешить еще ATM
17:59
и добавить параметры vpi/vci в сабы
zi_home #
17:59
а не дико будет туда все добавлять?
dvolodin #
17:59
профиль можно назвать Alcatel.73xx ?
zi_home #
18:00
нет
dvolodin #
18:00
почему дико?
zi_home #
18:00
сейчас атм, потом доксис, потом еще что
18:00
и все туда?
dvolodin #
18:00
они же необязательны
zi_home #
18:01
ну не знаю, все равно как-то в кучу
mikevlz|2 #
18:01
а что это с точки зрения сети?
18:01
разная среда, разные методы доступа к ней. А поверх туннель
dvolodin #
18:01
там и так дофигища
18:01
да нет
mikevlz|2 #
18:01
для кадлой среды/метода доступа свои виды
dvolodin #
18:01
условно говоря -- address family - atm
18:02
со своими адресными идентификаторами
zi_home #
18:04
вот я и говорю, дофига, а будет еще больше, хотя тебе конечно виднее
18:04
dvolodin, 7324 это отдельная железка, а еще у них есть 7302 и 7330, они тоже разные но в один профиль попадают
dvolodin #
18:06
если мы добавим параметры, сможем положить DSL'ную часть?
zi_home #
18:07
не уверен
dvolodin #
18:07
get_vlans нормальный
18:08
только два пробела вокруг == забыл
zi_home #
18:08
это красивости
dvolodin #
18:08
а что нам помешает положить DSL в NOC?
zi_home #
18:08
по-моему
18:08
на всех моих ДСЛАМах каждая vc привязывается к влану
18:09
как это будет выглядеть
18:09
саб у которого указан влан и pvi/vci?
dvolodin #
18:09
да
18:09
только подумать надо, в vlan_ids
18:10
или в untagged
18:11
а что с untagged засмущался-то в get_switchport ?
zi_home #
18:11
по моему варианту туда подсовывается список
18:11
а нок так не может
18:11
решил что проще без него
dvolodin #
18:12
"enet"+str(i+1)
zi_home #
18:13
я фактически выдергиваю все pvc и забираю их как untag, а tag забираю из списка вланов
dvolodin #
18:13
можно проще
18:13
"enet%d" % (i + 1)
zi_home #
18:13
чтоб я знал все эти фокусы
18:13
и ты хочешь сказать что это проще :)
dvolodin #
18:13
да
18:14
в питоне рекомендуется по возможности пользоваться форматированием строк, а не сложением
zi_home #
18:14
ну вы меня научите тут плохому :)
dvolodin #
18:14
[ 0-9]+
18:15
это точно плохому научит
18:15
под него попадают произвольные последовательности чисел, пересыпанные беспорядочными пробелами
zi_home #
18:16
hf,jnftn ;t
18:16
работает же
dvolodin #
18:16
а чего ловил-то?
zi_home #
18:17
посмотри в issue, там пример вывода написан, я не знаю, мне mikevlz|2 подкинул это
dvolodin #
18:18
думаю куда воткнуть это
zi_home #
18:18
надо get_interfaces нарисовать и программа минимум для дсламов выполнена
dvolodin #
18:18
давай-ка в отдельный бранч что-ли
zi_home #
18:18
я на sa сижу
18:19
добей его, я перейду
dvolodin #
18:21
хотя, профиль уже есть
18:22
в sa положу
mikevlz|2 #
18:22
добрые дела наказуемы :)
18:23
вот так вот раз и уже подкинул... как наркоман с полицейским
dvolodin #
18:23
да, выражение [ ]* это \s*
zi_home #
18:25
это, да, это я в доке увидел, ну и какая разница
18:25
отсавил как предложили
mikevlz|2 #
18:26
нифига... \s* у меня еще лишнее матчило, потому пришлось так изголяться
dvolodin #
18:35
ну тогда посто пробел и звездочка
18:35
ладно, хватит на сегодня
zi_home #
19:27
не хватит? передумал? :)
dvolodin #
19:36
:)
Tweet
Share this page
Share this page: Tweet