mikevlz Опубликовано 17 июня, 2009 · Жалоба И вопрос про последние веяния с выполнением произвольных скриптов. Я так понимаю, эти скрипты должны оказываться в профиле оборудования, чтоб их выполнила система. так?Я помнится, сделал свои скрипты для длинков или что-то в этом духе, которых на тот момент не было, при обновлении получил затык. Как это делать? :) map-скрипты, да, в профиле. Каждый скрипт в отдельном файле, прописывать их нигде не надо, и так найдет. Если скрипты достаточно универсальны и могут пригодиться другим, то можно поместить их в основной дистрибутив. Затык может быть только в случае, если меняется имеющийся скрипт, тогда hg pull отругается. Сделал копию get_versionобозвал get_version_my, для длинка.дес3ххх. Матрик-репорт на стандартном скрипте отрабатывает. Матрикс-репорт на моем скрипте выдает статус fail Пробую manage debug-script - получаю внятный результат. Кстати, получил в итоге такое: (?P<version>[\S\s].+)\nH" DEBUG:root:[script-172.17.64.10-DLink.DES3xxx.get_version_my] Script returns with result: {'platform': 'DES-3028', 'version': 'Build 2.00.B20', 'vendor': 'DLink'} Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
wraithkiev Опубликовано 17 июня, 2009 · Жалоба Добрый день! Пытаюсь ставить сабж на Дебиан по мануалу. При запуске $ python manage.py syncdb получаю трейсбеки: Traceback (most recent call last): File "manage.py", line 11, in <module> execute_manager(settings) File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/__init__.py", line 340, in execute_manager utility.execute() File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/__init__.py", line 295, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/base.py", line 192, in run_from_argv self.execute(*args, **options.__dict__) File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/base.py", line 218, in execute self.validate() File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/base.py", line 246, in validate num_errors = get_validation_errors(s, app) File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/validation.py", line 28, in get_validation_errors for (app_name, error) in get_app_errors().items(): File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/db/models/loading.py", line 128, in get_app_errors self._populate() File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/db/models/loading.py", line 57, in _populate self.load_app(app_name, True) File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/db/models/loading.py", line 72, in load_app mod = __import__(app_name, {}, {}, ['models']) File "/home/mpls/www2/noc/../noc/main/models.py", line 31, in <module> downloader_registry.register_all() File "/home/mpls/www2/noc/../noc/lib/registry.py", line 55, in register_all __import__(mb+f,{},{},self.classname) ValueError: Empty module name Подскажите, плиз, куда копать =) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 17 июня, 2009 · Жалоба И вопрос про последние веяния с выполнением произвольных скриптов. Я так понимаю, эти скрипты должны оказываться в профиле оборудования, чтоб их выполнила система. так?Я помнится, сделал свои скрипты для длинков или что-то в этом духе, которых на тот момент не было, при обновлении получил затык. Как это делать? :) map-скрипты, да, в профиле. Каждый скрипт в отдельном файле, прописывать их нигде не надо, и так найдет. Если скрипты достаточно универсальны и могут пригодиться другим, то можно поместить их в основной дистрибутив. Затык может быть только в случае, если меняется имеющийся скрипт, тогда hg pull отругается. Сделал копию get_versionобозвал get_version_my, для длинка.дес3ххх. Матрик-репорт на стандартном скрипте отрабатывает. Матрикс-репорт на моем скрипте выдает статус fail Пробую manage debug-script - получаю внятный результат. Кстати, получил в итоге такое: (?P<version>[\S\s].+)\nH" DEBUG:root:[script-172.17.64.10-DLink.DES3xxx.get_version_my] Script returns with result: {'platform': 'DES-3028', 'version': 'Build 2.00.B20', 'vendor': 'DLink'} Тогда имеет смысл заменть на такое: Firmware Version\s+:\s+(?:Build\s+)?(?P<version>\S+) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 17 июня, 2009 · Жалоба И вопрос про последние веяния с выполнением произвольных скриптов. Я так понимаю, эти скрипты должны оказываться в профиле оборудования, чтоб их выполнила система. так?Я помнится, сделал свои скрипты для длинков или что-то в этом духе, которых на тот момент не было, при обновлении получил затык. Как это делать? :) В последних коммитах появилась крайне полезная и давно востребованная возможность: локальные модификации. Редактировать напрямую развернутый дистрибутив NOC - порочная практика, так как при апдейтах из репозитория возникнет конфликт и апдейты не накатятся, а при апдейте из исходников все изменения просто потеряются. Выход следующий: в NOC'е есть каталог local/ который игнорируется при апдейтах. В него и надо писать локальные изменения. Сценарий первый - хочется поменять шаблон страницы. Они лежат в обычных HTML файлах. Если шаблон лежит в template/admin/sa/managedobject/change_list.html, то его нужно скопировать в local/admin/sa/managedobject/change_list.html и там уже редактировать. Он перекроет имеющийся шаблон NOC. Для шаблонов типа main/success.html нужно сделать двойника в local/main/success.html. То есть template/admin/ перекрывается из local/admin, а шаблоны приложений - из local/<приложение>/ Сценарий второй - необходимо изменить работу скрипта, например DLink.DES3xxx.get_version. Оригинал лежит в sa/profiles/DLink/DES3xxx/get_version.py. Нужно скопировать его в local/sa/profiles/DLink/DES3xxx/get_version.py и там редактировать. Сценарий третий - необходимо поправить профиль DLink.DES3xxx. Оригинал лежит в sa/profiles/DLink/DES3xxx/__init__.py, нужно скопировать его в sa/profiles/DLink/DES3xxx/__init__.py Сценарий четвертый - необходимо создать профить Vendor.Box и скрипты Vendor.Box.get_version и Vendor.Box.get_config. Профиль и скрипты надо разместить в local/sa/profiles/Vendor/Box/ в файлах __init__.py, get_version.py и get_config.py Стоящие изменения мы с удовольствием включим в основной дистрибутив NOC :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
mikevlz Опубликовано 17 июня, 2009 · Жалоба И вопрос про последние веяния с выполнением произвольных скриптов. Я так понимаю, эти скрипты должны оказываться в профиле оборудования, чтоб их выполнила система. так?Я помнится, сделал свои скрипты для длинков или что-то в этом духе, которых на тот момент не было, при обновлении получил затык. Как это делать? :) Сделал копию get_version обозвал get_version_my, для длинка.дес3ххх. Матрик-репорт на стандартном скрипте отрабатывает. Матрикс-репорт на моем скрипте выдает статус fail Пробую manage debug-script - получаю внятный результат. Кстати, получил в итоге такое: (?P<version>[\S\s].+)\nH" DEBUG:root:[script-172.17.64.10-DLink.DES3xxx.get_version_my] Script returns with result: {'platform': 'DES-3028', 'version': 'Build 2.00.B20', 'vendor': 'DLink'} Тогда имеет смысл заменть на такое: Firmware Version\s+:\s+(?:Build\s+)?(?P<version>\S+) это исходное значение, возращает оно только слово Build.Мое исправление возвращает вместе номером версии. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hawkmoon Опубликовано 17 июня, 2009 · Жалоба Добрый день! Пытаюсь ставить сабж на Дебиан по мануалу. При запуске $ python manage.py syncdb получаю трейсбеки: Traceback (most recent call last): File "manage.py", line 11, in <module> execute_manager(settings) File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/__init__.py", line 340, in execute_manager utility.execute() File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/__init__.py", line 295, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/base.py", line 192, in run_from_argv self.execute(*args, **options.__dict__) File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/base.py", line 218, in execute self.validate() File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/base.py", line 246, in validate num_errors = get_validation_errors(s, app) File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/validation.py", line 28, in get_validation_errors for (app_name, error) in get_app_errors().items(): File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/db/models/loading.py", line 128, in get_app_errors self._populate() File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/db/models/loading.py", line 57, in _populate self.load_app(app_name, True) File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/db/models/loading.py", line 72, in load_app mod = __import__(app_name, {}, {}, ['models']) File "/home/mpls/www2/noc/../noc/main/models.py", line 31, in <module> downloader_registry.register_all() File "/home/mpls/www2/noc/../noc/lib/registry.py", line 55, in register_all __import__(mb+f,{},{},self.classname) ValueError: Empty module name Подскажите, плиз, куда копать =) Вообще советовал бы ставить на убунту. В демьяне софт не свеж, а если обновлять до sid то проблема с touch вылазит нынче. А на убунте все кроме sphinx ставится из репозитория. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 18 июня, 2009 · Жалоба Вообще советовал бы ставить на убунту. В демьяне софт не свеж, а если обновлять до sid то проблема с touch вылазит нынче.А на убунте все кроме sphinx ставится из репозитория. Какая проблема с touch? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
mikevlz Опубликовано 18 июня, 2009 · Жалоба перезапустил все службы - заработал мой скрипт... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 18 июня, 2009 · Жалоба перезапустил все службы - заработал мой скрипт...в local/ ? Перезапускать надо fcgi, sae и activator Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
mikevlz Опубликовано 18 июня, 2009 · Жалоба не, у меня оно не в локал... упустил я момент, если изначально надо было именно в local эти скрипты класть. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 18 июня, 2009 · Жалоба не, у меня оно не в локал... упустил я момент, если изначально надо было именно в local эти скрипты класть. Можно и перенесли, модификаций не требуется. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hawkmoon Опубликовано 18 июня, 2009 · Жалоба Вообще советовал бы ставить на убунту. В демьяне софт не свеж, а если обновлять до sid то проблема с touch вылазит нынче.А на убунте все кроме sphinx ставится из репозитория. Какая проблема с touch? Да допустим при апдете apt-get не может установить новую версию. Падает на этапе post-install. Там в новых core_utils touch отказывается просо обновлять временную метку на файле если он существует. И вываливает с ошибкой. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 18 июня, 2009 · Жалоба Да допустим при апдете apt-get не может установить новую версию. Падает на этапе post-install. Там в новых core_utils touch отказывается просо обновлять временную метку на файле если он существует. И вываливает с ошибкой.Это как же надо было накуриться, чтобы сломать touch? может на файле что-то вроде флага noschg? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 18 июня, 2009 · Жалоба Дмитрий, день добрый! еще момент - при логине в noc не супервайзером, который встроенный noc, а обычным юзером с правами например делать все и везде при обновлении страниц с конфигами (в принципе любых страниц) при отображении оно залипает на некоторое время, я так понимаю обрабатывает чего юзеру можно, чего нельзя, если под noc зайти, то этой задержки нет, оно излечимо или это генетика? В последних коммитах (r1364) оптимизировали эти запросы. Проверьте, полегчало ему? PS: Комментарий "Idiotic implementation" там не зря стоял :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hawkmoon Опубликовано 19 июня, 2009 · Жалоба Да допустим при апдете apt-get не может установить новую версию. Падает на этапе post-install. Там в новых core_utils touch отказывается просо обновлять временную метку на файле если он существует. И вываливает с ошибкой.Это как же надо было накуриться, чтобы сломать touch? может на файле что-то вроде флага noschg? Да нет, обламывалось оно чаще всего на обычных логах. Никаких флагов на них не стоит. А отмочили конечно знатно =) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
mikevlz Опубликовано 19 июня, 2009 · Жалоба Засунули в базу 280 свичей одинаковых практически. Попытался сделать матричный отчет по get_version - выдало минуты через три fail. Что смотреть, что крутить? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
mikevlz Опубликовано 19 июня, 2009 · Жалоба при наличии local/sa/profiles/DLink/* отказалось напрочь синхронизироваться (post-update) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 19 июня, 2009 · Жалоба при наличии local/sa/profiles/DLink/* отказалось напрочь синхронизироваться (post-update) Где именно обламывается? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 19 июня, 2009 · Жалоба Засунули в базу 280 свичей одинаковых практически. Попытался сделать матричный отчет по get_version - выдало минуты через три fail. Что смотреть, что крутить?Полезно посмотреть, сколько процессов telnet/ssh запущено активатором и какой лимит на активаторе. Скорее всего, пытается достучаться до мертвых железок. Скрипт завершается либо по завершению всех map скриптов, либо по таймауту (180 сек, можно менять в форме) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Huko Опубликовано 19 июня, 2009 · Жалоба Спасибо за продукт, вещь действительно мощная, но приходится разбираться "методом тыка" :) Есть свич, он присылает на активатор трапы, эти трапы попадают в Unclassified Trap OIDs хотя там четко написано IF-MIB::linkDown, как мне привязать эти трапы к определенному классу ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 19 июня, 2009 · Жалоба Спасибо за продукт, вещь действительно мощная, но приходится разбираться "методом тыка" :) Есть свич, он присылает на активатор трапы, эти трапы попадают в Unclassified Trap OIDs хотя там четко написано IF-MIB::linkDown, как мне привязать эти трапы к определенному классу ? Правилами классификации (Сlassification Rules).Для link down есть несколько правил, можно посмотреть их в качестве примера. Чтобы добавить свое правило можно: 1. Открыть событие на просмотр 2. Нажать на кнопку "Create Rule" (справа сверху) 3. Отредактировать созданное правило и сохранить 4. В списке правил классификации нажать кнопку "Refresh Rules" 5. Опять открыть событие на просмотр и нажать кнопку "Re-Classify" сверху 6. Секунд через 10 обновить страницу и убедиться, что событие было классифицировано А что за железка? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Huko Опубликовано 19 июня, 2009 · Жалоба А что за железка? Zyxel 3124-4F + залил еще родной MIB и еще несколько по зависимостям. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 19 июня, 2009 · Жалоба А что за железка? Zyxel 3124-4F + залил еще родной MIB и еще несколько по зависимостям. Тогда, скорее всего, отдельное правило понадобится Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Huko Опубликовано 19 июня, 2009 · Жалоба всего, отдельное правило понадобитсяуже разобрался, спасибо !А можно ли как-то сделать массовый Reclassify, а то во время экспериментов их уже достаточно набралось :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 19 июня, 2009 · Жалоба всего, отдельное правило понадобитсяуже разобрался, спасибо !А можно ли как-то сделать массовый Reclassify, а то во время экспериментов их уже достаточно набралось :) SQL'ем. noc$ psql noc UPDATE fm_event SET status='U' WHERE ..... всего, отдельное правило понадобитсяуже разобрался, спасибо !А можно ли как-то сделать массовый Reclassify, а то во время экспериментов их уже достаточно набралось :) Какое правило получилось? (Там рядом с правилом ссылочка Python) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...