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: 23.09.2011
ss_ #
06:06
ДОброго утречка!
06:06
Есть очередной вопрос по скриптам
06:07
def execute(self,interface=None,vlan=None,mac=None):
06:07
cmd="show mac port 4/1/1-10/72/4"
06:07
if mac is not None:
06:07
cmd+=" address %s"%self.profile.convert_mac(mac)
06:07
if interface is not None:
06:07
cmd+=" interface %s"%interface
06:07
if vlan is not None:
06:07
cmd+=" vlan %s"%vlan
06:07
try:
06:07
macs=self.cli(cmd)
06:07
except self.CLISyntaxError:
06:07
# Not supported at all
06:07
raise self.NotSupportedError()
06:07
r=[]
06:08
как бы добавить условие если mac, interface и vlan нулевые то нужно давать команду show mac port 4/1/1-10/72/4, а если не пустые то соответвенно show mac " address %s"%self.profile.convert_mac(mac)
06:09
if mac is None & interface is None
06:09
Такой синтаксис?
06:12
или проше else в конце воткнуть?
dvolodin #
06:12
if mac is None and interface is None .....
ss_ #
06:14
if mac is not None:
06:14
cmd+=" address %s"%self.profile.convert_mac(mac)
06:14
if interface is not None:
06:14
cmd+=" interface %s"%interface
06:14
if vlan is not None:
06:14
cmd+=" vlan %s"%vlan
06:14
else:
06:14
cmd+=" port 4/1/1-10/72/4"
06:14
мне так больше понравилось
06:14
если не выполнилось ничего то так
dvolodin #
06:14
нет
06:14
так не будет работать
06:15
else относитс только к последнему if
ss_ #
06:15
точно мля)
06:15
туплю что то
dvolodin #
06:15
правильнее будет так
06:15
cmd = "show mac whatever"
06:15
rest = None
06:15
reset = "", тьфу
06:16
if mac is not None:
06:16
rest += " ...."
06:16
if interfce is not None:
06:16
rest += " ....."
06:16
....
06:16
if not rest:
06:16
rest = " port ...."
06:16
cmd = cmd + rest
ss_ #
06:16
if mac is not None:
06:16
cmd+=" address %s"%self.profile.convert_mac(mac)
06:16
elif interface is not None:
06:16
cmd+=" interface %s"%interface
06:16
elif vlan is not None:
06:16
cmd+=" vlan %s"%vlan
06:16
else:
06:17
cmd+=" port 4/1/1-10/72/4"
dvolodin #
06:17
нет
06:17
так не пройдет
06:17
можно одновремено задавать и мак и интерфейс
ss_ #
06:17
об этом не подумал
06:18
reset не совсем понял мысль с этой переменной
dvolodin #
06:18
s/reset/rest/
ss_ #
06:18
а понял
06:19
щаз попробую
dvolodin #
06:19
типа если ни одного дополнительного условия не задали - вставляем порты
06:19
или даже изящнее
06:19
cmd = ""
06:19
далее в cmd пишем хвостик
06:19
и в конце
06:19
cmd = "show .... " + cmd
ss_ #
06:23
щаз попробую
06:24
cmd="show mac"
06:24
reset=""
06:24
if mac is not None:
06:24
reset+=" address %s"%self.profile.convert_mac(mac)
06:24
if interface is not None:
06:24
reset+=" interface %s"%interface
06:24
if vlan is not None:
06:24
reset+=" vlan %s"%vlan
06:24
if not reset:
06:24
rest=" port 4/1/1-10/72/4"
06:24
cmd = cmd + reset
06:24
try:
06:24
macs=self.cli(cmd)
06:24
rest=" port 4/1/1-10/72/4" куыуе
06:24
reset
06:26
А ведь в мак репорт нет поля для задания интерфеса
06:31
непрально отрабатыват
06:34
непойму что то
06:34
[2011-09-23 10:32:49] !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
06:34
IP: 10.21.120.196 SCRIPT: Siemens.HIX5630.get_mac_address_table
06:34
[2011-09-23 10:32:49] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
06:34
show mac vlan 21
06:34
[2011-09-23 10:32:53] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
06:34
terminal length 0
06:34
[2011-09-23 10:32:54] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
06:34
[2011-09-23 10:32:55] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
06:35
================================================================
06:35
port vlan mac addr permission status in use
06:35
================================================================
06:35
0/1 21 00:11:5c:b7:2d:30 PERMIT DYNAMIC 173.5
06:35
т.е. получил
06:35
MAC Summary
06:35
Total: 0
06:35
Summary
06:35
Total VLANs 0
06:35
Total MACs 0
06:35
это в веб
06:35
не распарсил выходит
06:35
как можно дебаг с параметром запустить
06:35
?
06:39
понял
06:39
парсер давится
06:39
(?P<interfaces>\d+/\d+/\d+)\s+
06:40
т.е. порт может быть как 1/1/1 так и 1/1
06:40
как его правильнее переписать?
dvolodin #
06:45
(?P<interfaces>\d+/\d+(?:/\d+)?)
06:45
или уж совсем зверски
06:45
(?P<interface>\d+(?:/\d+)+)
ss_ #
06:45
(?P<interfaces>\d+/\d+(/\d+)?)
06:46
вот так вот сработало
dvolodin #
06:48
во внутренних скобках
06:48
(?:...)
ss_ #
06:48
зачем?
dvolodin #
06:48
(?:/\d+)?
ss_ #
06:48
(/\d+)? этого достаточно
dvolodin #
06:49
не надо лишнюю группу создавать
06:49
?: - анонимная группа
ss_ #
06:49
что это?
dvolodin #
06:50
в groups будет этот хвостик возвращать
ss_ #
06:51
лишние данные в масиве?
dvolodin #
06:52
да
06:52
которые нафиг не нужны
06:52
лишняя работа по извлечению ненужных данных
ss_ #
06:52
а как запросить через веб морду маки по портам?
dvolodin #
06:54
да по-хорошему надо отдельное приложение слабать для работы с маками
ss_ #
06:55
мне это редко нужно, просто бывает что есть только мак и надо найти гдеж он засел
dvolodin #
06:56
бывает надо проверить, где по цепочке он светится
ss_ #
06:57
вот для этого и включаю
06:57
думаю еще какие скрипты подцепить
06:58
можно впринципе все что угодно, но вопрос как их вызывать для выбраных железок
06:59
тока через SA MA и каждую железку поотдельностИ?
07:00
Home Service Activation Managed Objects
dvolodin #
07:03
SAApplication сделать
ss_ #
07:04
http://redmine.nocproject.org/boards/3/topics/1084 так?
dvolodin #
07:04
да
ss_ #
07:04
позже попробуем
dvolodin #
07:04
или просто скрипт на железке запускать
ss_ #
07:04
пока надо железо докрутить
dvolodin #
07:04
ему шаблон там задан, будет в таблице рисовать маки
07:05
с этих сименсов еще, по хорошему, надо syslog и трапы половить и правила понаделать
ss_ #
07:05
логи и так уже собираются
dvolodin #
07:05
Dmitry1 наворотил кучу классов для своего DOCSIS
07:06
наверное хорошо будет, если DSL'шки тоже объединятся и придумают нормальную модель событий и alarm'ов для DSL
ss_ #
07:06
на сислог сервер, трапы нет, не видел смысла в них, по снмп с них снимается много инфы и много тригеров на события
dvolodin #
07:07
съем инфы по SNMP это уже больше к скриптам и performance management'у
ss_ #
07:07
забикс там работает
07:07
)
07:08
http://habrahabr.ru/blogs/sysadm/120955/ вот часть того что снимается
dvolodin #
07:11
насчет partitioned table в заббиксе
ss_ #
07:11
да
dvolodin #
07:11
мы возились с постгресом
07:11
где-то в конце прошлого года
ss_ #
07:12
я тоже возился с ним, но дедлоки меня забодали
dvolodin #
07:12
база была гигов 150 примерно
ss_ #
07:12
у меня около 50 было всего
dvolodin #
07:12
так вот, общий диагноз был такой
07:13
эта скотина лупила настолько неграмотными запросами, что от partitioning'а не было вообще никакого толка
ss_ #
07:13
ггг ну мне тоже партишины на постгресе не помогли
07:13
даже хуже вроде стало
dvolodin #
07:13
именно
07:13
стало гораздо хуже
ss_ #
07:14
поэтому я и шуле с него на mysql
dvolodin #
07:14
начали разбираться, подняли все его запросы, полезли в исходники и ужаснулись
ss_ #
07:14
ушел
dvolodin #
07:14
с mysql на постгрес мы переползли как раз по рекомендации Zabbix SIA
07:14
мускуль просто загнулся
07:15
посгрес держался бодрячком, но из него было абсолютно невозможно удалить старые данные
07:16
в результате пристопорили работы над нашим PM, хотя ему partitioning как раз помогал
zi_rus #
07:17
а монго не поможет?
dvolodin #
07:17
поможет, причем сильно
07:17
фолт оно разогнало в 3-5 раз
07:18
тот же генератор префикс-листов - в 3 раза
07:18
надо только сделать ему обертку для прозрачного partitioning' f
07:19
тогда каждый параметр будет писаться в набор коллекций типа noc.ts.<param id>.<partition id>
07:20
drop коллекции в mongodb - быстрая и дешевая операция
07:20
создание - тоже
07:21
или даже так - noc.ts.<shard id>.<param id>.<partition id>
07:22
тогда данные легко можно будет растащить между шардами
07:23
noc-probe и сейчас неплохо собирает различные параметры
07:23
нужна только обвязка для конфигурирования и набор шаблонов
zi_rus #
07:28
dvolodin, сейчас увидел опять пришлось ./noc sync-perm делать
07:28
почему это происходит?
07:29
может быть это связано с нок-юи который на той же базе запускается рядом?
ss_ #
07:37
я тоже сначала радовался постгресу, но mysql забедил
07:37
сейчас найду графики
07:39
кстати после гет конфиг и прочего нужно вернуть terminal length 0 в terminal length 80
07:39
как это сделать правильнее?
07:41
command_disable_pager="terminal length 0"
07:41
а как обратно сделать?
dvolodin #
07:41
zi_rus: да, у новых приложений пермишены другие
07:41
ss_: посмотри dlink' ки
07:42
там есть функции на старт и стоп пейджера
ss_ #
07:43
command_exit="enable clipaging\nlogout"
07:43
правильно?
dvolodin #
07:43
sa/profiles/DLink/DxS/__init__.py
07:43
setup_session и shutdown_session
07:47
В общем, добиваем по максимуму критичные косяки и пора сливать ветки
ss_ #
07:49
dvolodin, в sa/profiles/DLink/DxS/__init__.py нет setup_session и shutdown_session
dvolodin #
07:50
hg tip что говорит?
07:51
noc> hg diff -r0.6.4:tip | wc -l
07:51
181636
07:53
с последнего релиза много воды утекло :)
ss_ #
07:56
не срабатывает
07:57
как вернуть terminal length 80
07:57
?
07:59
Куда только не прописал, всеравно в конце нет этой команды
dvolodin #
08:04
какая версия noc установлена?
zi_rus #
08:04
ss_, sa/profiles/DLink/DxS/__init__.py -> http://pastebin.com/KTdw3guZ
ss_ #
08:06
58-64 ?
08:16
zi_rus, не понял как сделать(
zi_rus #
08:17
у dvolodin лучше спрашивать, я просто показал, про что он говорил
ss_ #
08:17
идет какая то хитрая проверка
dvolodin #
08:17
ss_: ./scripts/about | head -1
ss_ #
08:17
потом по условию выполняется то одно то дургео
08:18
./scripts/about | head -1
08:18
|NOC|0.6.4|
dvolodin #
08:18
блин
08:18
накати до tip
08:18
там вагонище измененеий
ss_ #
08:18
э
08:18
а как?
zi_rus #
08:18
cd /opt/noc
08:18
hgpull -u
08:18
*hg pull -u
ss_ #
08:19
непохерит базы и созданые мной скрипты?
dvolodin #
08:19
http://redmine.nocproject.org/projects/noc/docs/en/nocbook/html/updating.html
08:19
не похерит
ss_ #
08:19
hg pull -u
08:19
abort: There is no Mercurial repository here (.hg not found)!
dvolodin #
08:20
cd /opt
ss_ #
08:20
я на одно тачке выкачал и скинул на сервак
dvolodin #
08:20
mv noc noc1
08:20
hg clone http://hg.nocproject.org/noc noc
08:20
cd noc
08:20
cp ../noc1/etc/*.conf etc/
08:21
mkdir local static/doc
08:21
chown noc local static/doc
08:21
примерно так
08:21
и спокойно перетаскивай старые скрипты
08:21
под конец - ./scripts/post-updat
08:21
post-update
08:21
потом все обновления
08:22
hg pull -u
08:22
./scripts/post-update
ss_ #
08:22
hg clone http://hg.nocproject.org/noc noc
08:22
requesting all changes
08:22
adding changesets
08:22
adding manifests
08:22
adding file changes
08:22
added 4645 changesets with 9862 changes to 3718 files
08:22
updating to branch default
08:22
pulling subrepo contrib/src
08:22
abort: error: Connection timed out
08:22
поэтому на другом компе делал
08:22
только через указание версий проходило
08:23
hg clone http://hg.nocproject.org/noc noc
08:23
abort: HTTP Error 500: Internal Server Error
08:23
и вот так
08:25
уже много раз так пытался
08:25
не хочет
08:25
abort: error: Connection timed out
08:25
постоянно
08:25
инет на серваке черз проксю
zi_rus #
08:26
тебе придется найти способ скачать актуальную версию
ss_ #
08:27
я то не против, вопрос почему таймаут всегда
zi_rus #
08:28
видимо дело в проксе
08:28
попробуй сделать clone на другом компе и скопируй
ss_ #
08:30
есть мысля
gnu-linux #
08:40
Хочу в staticvlan порт зделать varchar чтобы можно было порты вида eth1, gi1/3, 1:12 записывать в базу...
ss_ #
08:41
http://www.selenic.com/pipermail/mercurial/2006-May/008450.html mercurial через прокси
08:41
обновил, ладно обед потом дальше
gnu-linux #
08:45
для graphviz всё равно придётся конвертировать до натуральных чисел: eth1 -> 1, gi1/3 -> 1003, te2/3 -> 20003, 3:12 -> 3012
dvolodin #
08:45
через прокси вчера гонял меркуриал
08:45
в конфиге ему надо прописать
08:45
gnu-linux: в кавычки достаточно взять
gnu-linux #
08:45
Какие мысли?
08:47
noc понимает символьные порты? это хорошо, тогда надо мне только staticvlan подправить...
dvolodin #
08:47
а что ему мешает?
gnu-linux #
08:47
А GRAPHVIZ тоже может работать с символьными портами???
dvolodin #
08:49
если в кавычки взять, то да
gnu-linux #
08:54
Ура! Переписываю я для varchar(32) - длинее название порта не будет...
dvolodin #
08:59
делал бы сразу в монго
zi_rus #
08:59
а под новый ЮИ не хочешь переписать?
gnu-linux #
09:26
я иду мелкими шажками.. пока люди в отпуске, а мне их заменять....
09:38
линки в монгу совать пока боюсь.. у мнея пока 32разряда, монгу раз в месяц сношу... а с линками мне сильно жалко будет..
09:38
а вот новый гуй, гляну...
09:58
Как в постгри сменить тип столбца с int на varchar ???
ss_ #
10:01
Installed /opt/noc/contrib/lib/mongoengine-0.4-py2.6.egg
10:01
Processing dependencies for mongoengine==0.4
10:01
Searching for pymongo
10:01
Reading http://pypi.python.org/simple/pymongo/
10:01
и потом ерор
10:01
Download error: [Errno 101] Network is unreachable -- Some packages may not be found!
10:01
все через прокси
10:01
чем пытается даунлоудить этот скрипт?
10:02
куда проксю прописать?
10:05
куку
10:15
ну и как сдеалть ./scripts/post-update с проксей?
10:15
http_proxy установленна
10:21
easy_install используется?
zi_rus #
10:29
Как можно импортировать ip-адреса в IPAM? формат csv файла взял с форума, но где кнопка импорт?
ss_ #
10:39
./scripts/about | head -1
10:39
|NOC|0.6.4r4647|
10:39
вроде обновил
10:40
профиль мой самодельный не зацепился
10:41
ой сам дурак )
10:55
теперь вопрос как после выполнения любого скрипта на железке при выходе делать terminal length 80
10:55
ткните неуча носом
_4ePTeHok #
10:56
command_exit="enable clipaging\nlogout" ?
10:56
сами же писали
ss_ #
10:56
пробовал но вроде не помогла
10:57
сейчас с обновленой версией поробую
dvolodin_ #
11:03
gnu-linux: ALTER TABLE ....
gnu-linux #
11:15
ALTER TABLE sa_managedobject_links ALTER COLUMN port1 TYPE varchar(32);
11:15
^)
11:16
:) Всем хороших выходных..
ss_ #
11:24
_4ePTeHok, не помогает команда
_4ePTeHok #
11:29
в профиле щадал?
11:29
задал*
ss_ #
11:34
задавал, не помогает
11:40
command_exit="no terminal length\nexit"
dvolodin #
11:41
session_shutdown попробуй задать
ss_ #
11:48
class Profile(noc.sa.profiles.Profile):
11:48
name="Siemens.HIX5630"
11:48
supported_schemes=[TELNET,SSH]
11:48
pattern_more="^ --More--"
11:48
pattern_unpriveleged_prompt=r"^\S+?>"
11:48
pattern_syntax_error=r"% Invalid input detected at"
11:48
command_disable_pager="terminal length 0"
11:48
command_super="enable"
11:48
command_enter_config="configure terminal"
11:48
command_leave_config="exit"
11:49
session_shutdown="terminal no length"
11:49
command_save_config="wr mem\n"
11:49
pattern_prompt=r"^(?P<hostname>\S+?)(?:-\d+)?(?:\(config[^\)]*\))?#"
11:49
dvolodin, не помогает
11:50
[2011-09-23 15:49:09] !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
11:50
IP: 10.21.120.199 SCRIPT: Generic.commands
11:50
[2011-09-23 15:49:09] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11:50
show vlan
11:50
[2011-09-23 15:49:13] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11:50
terminal length 0
11:51
| locked by: extern: IGMP (absolute)
11:51
т.е. начало есть а вконце в логе ничего нет
11:51
т.е. команда не выполняется похоже
dvolodin #
11:52
полный профиль выложи
ss_ #
11:55
http://pastebin.com/JffnEKpj
dvolodin #
12:02
http://dpaste.com/619527/
ss_ #
12:06
Спасибо! Заработало, вконце пишеть то что нужно
dvolodin #
12:07
лучше в setup_session проверить состояние пейджера
12:07
и запомнить его
ss_ #
12:07
для хикса поумолчанию он выключен
12:08
так что проверять особого смысла нет, лишние запросы
dvolodin #
12:12
Нашел pyre-python реализацию AMQP
12:13
http://ask.github.com/kombu/userguide/
ss_ #
12:36
а что эТО?
Tweet
Share this page
Share this page: Tweet