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: