nocproject.org
05:44
сделал нумерацию строк при просмотре конфига
 
05:45
dvolodin, а admin/oper status в списке интерфейсов не хочешь начать рисовать?
 
05:47
:)
05:47
и до них дойдем
 
05:48
просто мысль в голову пришла
05:48
админ статус можно замочком рисовать
05:49
заблокирован - есть замочек, разблокирован - нету
 
05:49
05:49
выбирай любой
 
05:49
zi_home, не прозрачно
 
05:49
типа как у change password
05:49
freeseacher, почему
05:51
по-моему, и прозрачно и логично и понятней чем если как везде будут галочка и крестик
05:54
freeseacher, ты только представь на сколько проще будет одним взглядом находить погашенные порты
 
05:55
freeseacher: посмотри нумерацию строк
05:55
вроде нормально получилось
 
05:55
zi_home, я честно никогда не пойду в нок что бы посомтреть состояние порта.
 
05:56
freeseacher, потому что в ноке этого нет, но когда я копаюсь в списке портов, эта информация очень облегчила бы жизнь, а отображение ее удобным способом было бы еще лучше
06:00
freeseacher, я даже больше скажу, если бы, я надеюсь что эту функцию расширят, сначала просто отображать эти статусы, потом научиться обновлять их по сообщениям приходящим по снмп/сислог, а потом чтобы обновленная информация отправлялась на кл
06:00
иент через пуш, и это уже действительно получится система управления и мониторинга
 
06:00
да там рефрешить достаточно раз в минуту
06:01
хотя
06:01
можно сделать коллекцию для статуса интерфейсов
06:01
и действительно обновлять по syslog'у и результатам опросов
 
06:01
не скажи, если кто-то что-то делает и просит последить за линком, то эта информация нужна online
 
06:02
я пока не могу оценить, насколько websocket испортит всем жизнь
06:02
как минимум потребуются последнии версии nginx
 
06:02
фича бранч для тестов
 
06:03
давайте пока не будем плодить бранчи сверх меры и допилим sa-managedobject
06:04
я победил nvd3, теперь умею рисовать графики
06:04
нужно все это вместе запилить с профилями интерфейсов, чтобы добавлялось автоматом
 
06:05
не только профилем но и персонально дл якаждого интерфейса
 
06:05
там нужно что-то вроде monitoring profile
 
06:12
mikevlz, mikevlz|2, кто-нибудь из вас тут?
 
06:15
mikevlz, не сложно будет помочь с 
NOC-1148? мне бы хотя бы с regexp чтобы ключевые параметры положить в переменные, а дальше с питоном я уже сам выдерну нужное
 
06:22
тебе что надо переменные с тегом/именем влана и маски forbidden + tag?
 
06:23
тег, имя, enab/disab, и маска с --U---
06:24
там где FXXX.. это не надо, это шлак
 
06:25
это не шлак. Это запрет динамическому роутингу вланов вешать туда этот влан
 
06:26
в ноке такого понятия нет на сколько я знаю, и у нас он тоже не используется, так что для меня это шлак, если в ноке все же есть куда это сохранить, то можно и его
06:26
одним больше, одним меньше
 
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 к чему относится?
 
06:39
а я хз, говорю что это шлак
 
06:39
там может быть Fixed/Forbidden/Normal? или Normal/Tag/Untag?
 
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
 
06:41
mikevlz, спасибо, попробую, закину пока для истории это в issue, чтобы не потерять
 
06:41
ну и иметь в виду, что из портмаску надо будет разбить на две по пробелу. до пробела абон порты, после - магистраль, если я прально понял
 
06:42
ну да, слушай, а сразу в regexp н еполучится их в разные переменные закинуть?
06:42
там только пробелом разделены, должны легко матчиться
 
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]*)
 
06:47
ок, спасибо, чего это я сам не допер \n использовать в regexp, попробую
 
06:47
но работай только с именованными группами
06:47
и эта... если dotall сделаешь, то \s будет матчить еще и перевод строки
 
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 ------------------------------------------------------------------------
 
08:18
обедать уже пора, утро кончилось давно
08:19
однако полдень
 
08:27
у него вообще полночь может быть
08:27
не все же по MSK/MSD живут
 
08:29
я в курсе, это был легкий стеб, надо видимо смайлы расставлять
08:30
даже не стеб, а просто шутка такая
 
08:54
mikevlz, слушай, я вот про regexp, там в начале вывода идет заголовок, он не будет мешать работе или его надо как-то исключить из строки к которой применяем regexp?
 
08:54
я вместе с заголовком загонял...
08:54
re-try.appspot.com
08:54
зайди, потесть
 
08:56
попробовал, сработало, остается тогда еще проблема
08:57
mikevlz, ты не знаешь какой-нибудь питоновской функции чтобы правильно разделить этот вывод на блоки, чтобы скармливать regexp'у
08:58
\n ведь раскидает все по строкам, и это не подходит
08:58
а как еще, там ключевых слов нигде нет
 
08:59
есть функция findall
08:59
она дает итерируемое.
 
08:59
то есть по ней можно сделать for
 
09:00
она используется где-нибудь в профилях?
09:00
можно скрипт посмотреть или пример какой?
 
09:00
посмотри get_interfaces и get_vlans разные
09:00
я ща навскидку не помню
 
09:01
у джунипера нашел в get_interfaces
 
09:01
кушай наздоровье =)
09:02
эта функция возвращает массив матчей
09:02
или как-то так...
 
09:02
ммм
09:02
это стандартная функция?
09:02
похоже да, почитаю доку про нее
09:15
mikevlz, я тебя еще немного поспрашиваю, а вот это нормально что эта хреновина сделала так что
09:15
('430', 'test', '                               1         2         3         4        ', 'enabled', '                      XXXFXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX FF', '---U--------------------------------------------', 'TT')
 
09:15
а что ненормального?
 
09:15
я к тому что почему она взяла все, а не только переменные
 
09:15
она взяла группы...
 
09:15
vid vname etc.
09:16
то есть смысла в названиях переменных как бы и нет
 
09:16
там есть еще другие функции, которые дают возможность искать кучу матчей
09:16
ну кагбе нет
09:16
получается
09:16
=)
09:16
я же не настоящий сварщик, а так... каску взял погонять
 
09:17
конечно не очень хорошо что кривой код будет, но в принципе работать будет
 
09:18
он не кривой... это Magna cum nada
 
09:18
zi_home: лишние группы можно убрать
09:18
замени (…..) на (?:……)
 
09:18
если ты постараешься, то вместо findall найдешь какую-нить finditer...
09:19
или еще какой итератор по матчам, который будет только именованные группы выдавать
 
09:19
for match in rx.finditer(....):
 
09:19
mikevlz, я видел в доке finditer, попробую, если так говорите
 
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
опять история как с генераторами
 
09:22
match.group("name")
09:22
match.groups()
09:22
match.groupdict()
 
09:22
о
09:22
так лучше
09:23
get_vlans получится сейчас
09:23
потом в get_switchport его мутирую
 
09:28
одним скриптописцем больше
09:28
:)
 
09:28
обозвал так обозвал
 
09:32
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
копипастил половину из других скриптов
 
09:34
self.rx_vlan? хотя хз... или определение rx_vlan затащи в def execute
 
09:36
да, так помогло
09:36
self...
09:37
скажите алилуйя, он заработал
 
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
 
10:07
демон недотягивается до пид-файла. Т.к. у пидфайла не обновляется время - считается, что демон завис
10:07
его прибивают, запускают заново
10:07
отключи heartbeat
 
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
но так не работает
 
10:55
zi_home: посмотри функцию parse_table
 
10:56
dvolodin, это в ноке?
10:56
или стандартная
 
10:56
 в noc.lib.text
10:56
она спасет тебя от ужасов скотоложства
 
10:57
это гуд, только экспериментировать сложнее, на живую придется
 
10:57
а чего там эксперементировать
10:58
выдирай repr из debug-script
10:58
и в ./noc shell играйся
 
10:59
там и играюсь
11:00
dvolodin, посмотри 
NOC-1153, нок трейсится на ровном месте
11:02
шикарная штука parse_table
 
11:04
[vv
11:04
хмм
11:04
тогда как можно попробовать отладить нотификации
11:04
у меня оони то отсылают то нет
 
11:10
zi_home: ага
11:10
в NOC'е много таких вот вкусняшек
11:10
parse_table твою табличку в два плевка драконит
11:10
как раз по этой полоске с минусами
 
11:11
да, я понял что все на минусы завязано
 
11:12
ага
11:12
но результат хороший
 
11:16
dvolodin, как будет правильней, для get_switchport, на железке настройки делаются в два этапа, сначала на порту настраивается pvc и влан, а потом влан еще привязывается к порту
11:17
и одну часть можешь забыть и работать не будет
 
11:20
ты же не конфиг анализируешь
11:20
вывод команд какой?
 
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
да, так наверно правильней
 
11:24
там бы по хорошему еще  в get_interfaces возвращать vpi и vci
11:25
если уж мы в DSL лезем
 
11:27
подумай тогда на IGetInterfaces
11:27
как его расширить
11:28
у нас там явно не хватает encapsulatio
 
11:28
ну а какие есть варианты
 
11:28
ether, ppp, hdlc, ....
 
11:28
атм, pon, 802.1q, 802.1ad
 
11:29
в общем подумать нужно, как DSL порты в общую модель класть
 
11:30
или вообще не класть
 
11:31
ufir, у вас что, дсламов нет?
11:31
кто-то тут хуавеевские дсламы вспоминал
11:31
а еще кто-то зуксели
11:31
технология умирает, но будет еще долго существовать
 
11:33
да что-то паршиво оно умирает
11:33
для полноты картыны нам нужно положить DOCSIS и *DSL на общую модель
 
11:33
я не об этом
11:33
там обычно абоненты живут
 
11:34
ufir: а давай о страшном поговорим
11:34
скажем, о TR-069 :)
 
11:34
о спаннинг-три ?
11:34
а..
 
11:34
у кого-то еще доксис живой есть?
 
11:34
я свой вырубил недавно
11:34
там полтора клиента было
 
11:35
у нас в городе говорят у РТ тоже есть полтора клиента на доксисе
 
11:36
а у нас Акадо
11:37
на самом деле я про то, что возможна кошмарная ситуация, когда абонентские CPE'шки окажутся в NOC
11:37
хотя бы в силу неработающего нормально TR-069
 
11:37
не окажутся, они уже у нас есть, маленькие свичи для разбора транка, вот эти дсламы
 
11:38
ну тогда нужно нормально моделировать их
11:38
и в базу класть
 
11:39
dvolodin, вы пока думайте, а я буду скрипт без vpi/vci рисовать, мне сейчас надо
 
11:43
ok
11:43
добъешь сам?
 
11:44
кого? get_... думаю да, а интерфейсы нока вы как-нибудь без меня
 
11:48
а что ты в итоге вообще получить хочешь?
 
11:48
чтобы все мое оборудование было в нок, чтобы я мог легко по номеру влана узнать куда он уходит
11:49
сейчас если он уходит на дслам я этого не узнаю, только телепатически
11:49
плюс для новой схемы с q-in-q это вообще большой головняк
11:50
плюс, если у меня будут интерфейсы дслама в ноке, я смогу сниппетами и скриптами с ними работать как сейчас работаю с каталистами
 
11:51
ахтоматизатор
11:51
почетный
 
11:52
я вообще ставил нок только чтобы он собирал конфиги и вести ip адреса
 
11:52
а сейчас это второй план перед такими автоматизациями
 
11:52
а потом он захавал власть над миром
 
11:53
да, это наркотик, с него не слезешь
11:53
никто такого больше не умеет
11:54
dvolodin, черт с ними с vci, подумай дальше про vpls
 
11:54
дай доделать managed object'ы
11:54
а то у меня в голове еще performance management крутится и inventory
11:55
inventory -- терминальная фаза
 
11:55
готов помочь с инвентори
11:55
мне для полного счастья в ноке не хватает инвентори и ГИС
 
11:55
но сначала нужно восстановить функционал скриптов и сниппетов
 
11:55
ГИС это очень больная тема
11:56
vovan888, а что ты можешь? писать код?
 
11:57
да
11:57
правда мои патчи не коммитят нифига
11:57
ну да и ладно
 
11:57
коммиты достигаются непрерывным пиннанием
11:57
:)
 
11:58
я уже хотел было сам начать инвентори делать, чтобы вести учет не только активки но и пассивки
11:58
но может у отца основателя есть уже наработки
 
12:00
vovan888, да, тут лучше согласовать, чтобы не пропало даром и в проект можно было код внести если не жалко
12:00
вот только он убежал
 
12:01
ага, сразу убежал :)
 
12:02
еще вернется, куда он денется
 
12:03
опять слать лучи? :)
 
12:11
e_zombie1, шли коммиты
12:11
народ, из оставшихся, кто сможет пару скриптов закоммитить, если я выложу?
12:17
лес рук, видимо придется подождать, ну ничего, скриптов все равно еще нет
 
12:21
я могу тока голых девочек подкинуть
 
12:22
смотри, забанят нок за такое
 
12:22
за это не забанят .
12:22
все постановочное
12:23
12:23
а вот за такое могут. если не разберутся :)
12:23
12:24
 
12:24
ты думаешь они там в чем-то хотят разбираться
 
12:24
12:25
в пятницу после работы снял.
 
12:25
ну и развлечения у вас по пятницам после работы, у нас все больше бухают
 
12:31
ну каждый сам по себе.
 
12:31
да и не бухают у нас. потому что гавно работа.
 
12:32
zi_home: а у них кто бухает - того привязывают и фотографируют :)
12:32
борьба с пьянством... бессмысленная и беспощадная
 
12:32
все съёбвапют по звонку
 
12:33
e_zombie1, если бы я не бухал, давно бы уволился, зарплатная депрессия угнетает, хоть по пятницам удается это забыть
 
12:33
zi_home: до следующей зарплаты?
 
12:34
ну это может говорить об одной из двух вещей... или много пьешь, или маленькая зарплата
 
12:34
или маленькая зп потомучто поъешь
 
12:35
не потому что, но маленькая
12:35
это угнетает
12:35
а деваться некуда, все говорят езжай в мск
 
12:35
а у нас уже и такого нету.
 
12:35
и тут возникает философский вопрос: а большая или нормальная ЗП это сколько?
 
12:36
такой же философский ответ
 
12:36
такой же философский ответ
 
12:37
ну когда у  ведущего инженера она почти всего в полтора раза больше чем у грузчика на рынке под окном. это как бы намекает.
 
12:37
у меня кажет 2 секунды разницы
 
12:38
mikevlz, это задержка сервера, ответы у меня на экране появились почти одновременно
12:39
e_zombie1, меня еще напрягает что программерам в разы больше платят
 
12:40
особенно энурезникам?
 
12:40
да я адин-эс энурезом зову
12:40
звучит похоже :)
 
12:41
ну для программера в целом не так обидно. они типа творцы. хотя некоторых надо усыпить чтобы не писали говнокод, но всёже
 
12:41
про них не знаю, но вроде у них меньше чем у других, по крайней мере не самая высокая это точно
 
12:41
это потому что расплодились и сбили цену.
 
12:42
у нас счас по всему городу билборды зовут к нам работать. показательно.
 
12:42
e_zombie1, как тебе сказать, творец это архитектор программного продукта, а программер это лишь программер
 
12:42
профессионал там стоит один хрен дорого. К тому же зачастую только почасовая/посуточная оплата :)
 
12:43
zi_home: ну я тут больше не по профессии а о как профессионале своего дела.  нубъё понятно что не получает золотые горы.
 
12:43
собрались старпёры...
12:43
косточки молодежи обмывают
 
12:43
mikevlz, только их профессионал как бы все равно дороже сетевика выходит, а ты например учти стоимость косяка программера или сетевого инженера
 
12:44
программера тестеры прикрывают, а твой косяк за сотни километров может быть
12:44
или всю сеть положит и бизнес встанет
12:44
ответственность однако
12:44
за нее принято платить
 
12:45
залететь на нарушении налогового кодекса гораздо хуже, чем пол города оставить без интернетов. За НК можно и статью УК словить, а из полгорода десяток отключится и все. Остальные быстро забудут
 
12:45
вот только у нас почему-то не принято
 
12:45
забей. не стоит меряться профессиями.
12:45
это неконструктивно
 
12:46
mikevlz, это не только интернеты
 
12:46
ну ладно, триппер плей всем положить
 
12:46
я вот думаю как бы мне карты дорисовать между железками с разными протоколами.
 
12:46
воип до сих пор не полноценная телефония.
12:46
e_zombie1: я по-наркомански сделал
 
12:46
e_zombie1, руками, если не много
 
12:47
я сравнивал вланы на незалинкованых поднятых интерфейсах. Там где набор вланов совпадал - добавлял в кандидаты
12:47
оно, правда, много false-positive генерирует
 
12:48
это то понятно. но наркомания не есть правильно
 
12:48
mikevlz, про питона
12:48
>>> print r
12:48
[{'interface': 1}, {'interface': 4}]
 
12:48
если есть еще какие отличительные особенности - стоит их учитывать. Например, влан управления(должны быть одинаковые сетки)
 
12:48
как к interf 4 добавить untag 1
 
12:51
r[1].update({'tag':4095})
12:51
попробуй так, если я правильно тебя понял
 
12:52
mikevlz, да так сработало, но немножко по-другому хочется, чтобы выбирать элемент не по номеру, а по содержанию
 
12:56
хз тогда...
12:56
смотри методы работы с диктами
 
13:00
или придется логику скрипта переделывать
 
13:41
я сейчас попробовал добавить линк и у меня крашнулось. это так и должно быть?
 
13:59
по-моему для тебя это уже становится нормой
15:20
не, get_switchport взорвал мне мозг
 
15:21
он такой....
15:21
тебе нужно закусить энергетик молотым кофе...
15:21
тогда ты увидишь время и поймешь get_switchport. С get_interfaces сложнее =)
 
15:27
да, я тут придумал как упростить
15:27
get_interfaces не сложнее
 
15:27
вопрос такой
15:28
я вот не пойму как можно вланы добивать в список
 
15:28
список тегированных
15:29
вот я прошелся и увидел что на этом порту 456 влан тегированный
 
15:29
потом прошелся еще раз, 123 влан тоже тегированный
 
15:29
как в словарь добавлять
 
15:29
да никак не добавлять...
 
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'},
 
15:30
прально, надо возвращать список в словаре
 
15:30
хотя выругал кажется за другое
15:30
так вот в чем и вопрос
15:30
значит сначала надо сформировать список
15:31
а потом добавлять в словарь
15:31
но как
 
15:31
посмотри или брокейд иронварь или хп прокурву9ххх
 
15:31
там ведь получается первый порт второй порт для каждого влана
 
15:31
там в гет_интерфейсес по вланам бегают
15:32
оно там ебанутое, я его не понимаю, если честно :)
 
15:32
копаться в чужом скрипте, да еще когда это get_interfaces, можно мозг по второму разу взорвать
 
15:33
но, если есть parse_table, то может есть еще join_table...
15:33
хотя не...
 
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
 
15:34
append хорошо, это я знаю, вернее знал и забыл, сейчас вспомнил, но вопрос в другом
15:35
два интерфейса, значит два списка
15:35
хоть я и пишу скрипт для профиля который фактически для одной железки
15:35
но интерфейсов может быть и больше
 
15:35
при любом количестве интерфейсов - всего два списка. Список тегированных вланов на интерфейсе и список не тегированных
 
15:36
нет
15:36
я про тегированные
15:36
на каждый порт по списку
 
15:36
ёпт...
15:36
да, и все это в списке
 
15:36
вот я иду по списку вланов
15:36
для каждого влана я определяю, тегирован он на этом порту или нет
15:37
на этом и на следуюущем
15:37
в итоге мне за один проход надо создать 2 списка
15:37
а это две переменных куда надо все записать
 
15:37
это один список
15:37
посмотри код выше
 
15:38
нет
15:38
список на каждый порт
15:38
или делать несколько проходов
15:39
сначала делать список тегированных вланов для первого порта
15:39
сделал, записал, обнулил
15:39
потом для второго
15:39
но это не оптимально
15:39
или похер?
 
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
смысл понятен?
 
15:41
цикл по вланам.
15:41
в каждом влане идешь в цикле по портам.
15:42
если порт тегирован в этом влане - добавляешь тег влана к списко tagged для этого порта
15:42
если не тегирован - к Untagged
 
15:43
tagged[port]+=[v] - вот эта комбинация интересная
 
15:43
в зависимости от железки, если порт антегом в одном влане и ни в одном из вланов не тегирован - он аксесный
15:43
эта комбинация - конкатенация списков. Тот же аппенд.
 
16:02
zi_home: если тебе просто список vlan'ов держать - используй set
16:02
vlans = set()
16:02
vlans.add(10)
16:02
vlans.add(496)
16:02
....
 
16:04
нет, ну смотри
16:04
эта хреновина отдает список вланов
16:05
я перебираю этот список и записываю на каких портах каждый влан тегируется
16:05
как это делать?
 
16:06
set и dict
16:07
тебе что нужно в итоге
16:07
какие vlan'ы на порту или какие порты в vlan'е?
 
16:08
это не мне, а как ноку нужно
16:08
как я понял
16:08
порт и список
16:08
порты во влане у меня фактически на руках
16:10
я знаю, длин тоже для каждого влана возвращает список портов, но там такой наркоманский скритп, я его не понял
 
16:10
get_swithcport возвращает список интерфейсов
 
16:10
а для каждого интерфейса список вланов
 
16:11
один untagged и список vlan'ов
16:11
а ты читаешь в обратном порядке?
16:11
vlan и список интерфейсов, или как?
 
16:11
нет, у меня есть влан и список интерфейсов их железка так отдает
16:12
я пытаюсь обратное преобразование сделать
16:12
только не говори что у тебя и на это есть функция :)
 
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)
 
16:16
на выходе получаешь в tagged для каждого интерфейса set vlan'ов
 
16:16
похоже на sa/profiles/DLink/DxS/get_switchport.py
 
16:17
попробую второй заход
 
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
тогда там список будет
 
16:27
dvolodin, дескрипшен для get_switchport обязателен?
 
16:28
хорошо, иначе пришлось бы отдельную команду выполнять
 
16:31
get_switchport -- это ранний вариант get interfaces
16:32
собственно, для простых свичей get_interfaces делается как раз из get_switchport
 
16:55
dvolodin, а untagged все еще только один или тоже список можно?
 
17:19
печаль, про длинки тебе уже говорили, на этом дсламе тоже может быть несколько
 
17:20
а смысл?
17:20
жопой тоже можно петь
 
17:23
dvolodin, магия такая, я могу на один адсл порт с разными pvc разные вланы проключить и все они будут untag, не говоря о том что от лени просто не буду включать тегирование на втором аплинке ибо использую всего один
17:24
17:34
и кстати, такое у нас есть причем не в одном месте, а вполне регулярно
 
17:50
но они у тебя будут untagged для конкретного vpi/vci, так?
17:50
тогда никакого криминала тут нет
17:50
добавляем vpi/vci как параметры SubInterface
 
17:51
ну да, но вот что есть то есть
 
17:51
и будет у тебя несколько сабов с разными vpi/vci и каждый со своим untagged
17:51
:)
 
17:51
никакого криминала, никаких SMS
17:51
на самом деле это действительно разные сабы
 
17:51
надо что-то с get_interfaces кстати делать для этого профиля
 
17:52
не надо
17:52
ты и так впишешь все нормально
 
17:53
для switchport это выглядит все печально, там же нет сабов
 
17:54
как же он будет дискаверить
17:55
может этот скрипт и не нужен?
 
17:56
для discovery - не нужен
17:56
он для тупых свичей
17:58
так что насчет vpi/vci?
 
17:58
ну пусть будет раз написан, кстати, с точки зрения л2 это тупой свич
17:58
а что vpi/vci
 
17:59
можно в enabled_afi разрешить еще ATM
17:59
и добавить параметры vpi/vci в сабы
 
17:59
а не дико будет туда все добавлять?
 
17:59
профиль можно назвать Alcatel.73xx  ?
 
18:00
сейчас атм, потом доксис, потом еще что
18:00
и все туда?
 
18:00
они же необязательны
 
18:01
ну не знаю, все равно как-то в кучу
 
18:01
а что это с точки зрения сети?
18:01
разная среда, разные методы доступа к ней. А поверх туннель
 
18:01
там и так дофигища
18:01
да нет
 
18:01
для кадлой среды/метода доступа свои виды
 
18:01
условно говоря -- address family - atm
18:02
со своими адресными идентификаторами
 
18:04
вот я и говорю, дофига, а будет еще больше, хотя тебе конечно виднее
18:04
dvolodin, 7324 это отдельная железка, а еще у них есть 7302 и 7330, они тоже разные но в один профиль попадают
 
18:06
если мы добавим параметры, сможем положить DSL'ную часть?
 
18:07
get_vlans нормальный
18:08
только два пробела вокруг == забыл
 
18:08
а что нам помешает положить DSL в NOC?
 
18:08
по-моему
18:08
на всех моих ДСЛАМах каждая vc привязывается к влану
18:09
как это будет выглядеть
18:09
саб у которого указан влан и pvi/vci?
 
18:09
да
18:09
только подумать надо, в vlan_ids
18:10
или в untagged
18:11
а что с untagged засмущался-то в get_switchport ?
 
18:11
по моему варианту туда подсовывается список
18:11
а нок так не может
18:11
решил что проще без него
 
18:13
я фактически выдергиваю все pvc и забираю их как untag, а tag забираю из списка вланов
 
18:13
можно проще
18:13
"enet%d" % (i + 1)
 
18:13
чтоб я знал все эти фокусы
18:13
и ты хочешь сказать что это проще :)
 
18:13
да
18:14
в питоне рекомендуется по возможности пользоваться форматированием строк, а не сложением
 
18:14
ну вы меня научите тут плохому :)
 
18:14
[ 0-9]+
18:15
это точно плохому научит
18:15
под него попадают произвольные последовательности чисел, пересыпанные беспорядочными пробелами
 
18:16
hf,jnftn ;t
18:16
работает же
 
18:17
посмотри в issue, там пример вывода написан, я не знаю, мне mikevlz|2 подкинул это
 
18:18
думаю куда воткнуть это
 
18:18
надо get_interfaces нарисовать и программа минимум для дсламов выполнена
 
18:18
давай-ка в отдельный бранч что-ли
 
18:18
я на sa сижу
18:19
добей его, я перейду
 
18:21
хотя, профиль уже есть
18:22
в sa положу
 
18:22
добрые дела наказуемы :)
18:23
вот так вот раз и уже подкинул... как наркоман с полицейским
 
18:23
да, выражение [ ]* это \s*
 
18:25
это, да, это я в доке увидел, ну и какая разница
18:25
отсавил как предложили
 
18:26
нифига... \s* у меня еще лишнее матчило, потому пришлось так изголяться
 
18:35
ну тогда посто пробел и звездочка
18:35
ладно, хватит на сегодня
 
19:27
не хватит? передумал? :)
 
    Share this page
    Share this page: