Cкрипт для мониторинга Polycom KIRK Wireless Server 6000

Apr 06, 2012 12:49

Понадобилось мониторить в забиксе состояние железяк KIRK 6000 ,к ней подключены ещё 3 станции ,одна отключена.
Задача написать скрипт который будет нам сообщать о проблемах доступа или появлении альтернативных синхронизаций.
Сначала написал скрипт на питоне с использованием либы http://docs.python-requests.org/en/latest/index.html .
Получилось быстро, красиво, но если пароль в скрипте и на самой железке не совпадал ,скрипт вел себя неадекватно нереагируя на except ,хотя в интерпритаторе питон просто вываливалсь с небольшим трейсбеком ... решить эту проблему сходу не получилось ,взял стандартную urllib2 . Скрипт не сложный и если вы не меняли дискрепшены у всего оборудывания,то заработает сходу, скрипт надо запускать с аргументом,которым будет айдишник(серийник с 000 сначала) оборудывания

Для аутентификации на устройстве понадобилась  HTTP Digest Authentication . простеньких работющих примеров сходу я не нашёл ,так  что вот рабочий вариант

пример вызова скрита
/scripts/kirk.py 0001234567
[Сам скрипт на Python с urllib2 и Digest Authentication ]

#!/usr/bin/env python
#coding: utf-8
########### ficsh #############

import sys
import urllib2

######### Переменые ###########
url = 'http://IPadress/administration_rfps.html'
username = 'Login'
password = 'Passowrd'
ID = sys.argv[1]
###############################

######### Digest Авторизация ##
# HTTP Digest Authentication ##

mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
mgr.add_password(None, url, username, password)
opener = urllib2.build_opener(urllib2.HTTPDigestAuthHandler(mgr))
urllib2.install_opener(opener)

# Загрузка страницы и чтение ##
try:
    response = urllib2.urlopen(url)
    html = response.read()

except:
        print 3                         # Выводим ответ скрипта если он не может подключится.Для забикса пусть будет 3
        sys.exit()

if (ID) in html :                       #проверка серийного номера на странице
        startindex = html.find(ID)      #переход к серийному номеру
        status = html[startindex+115:startindex+200]    #переход к статусу серийного номера
        if 'not connected' in status :                  # проверка на состояние
                print 0                 # Серийный номер неподключен
        elif 'ball_yellow' in status :  # Проверка появилась ли альтернативная синхронизация (через картинку)
                print 2                 # Проблема с синхронизацией
        else:
                print 1                 # Серийный номер подключен
else:
        print " Серийный номер не найден/ Неправельный аргумент "   # В забиксе мы вручную указываем код и мониторить данную ошибку не будем.



python, script, kirk

Previous post Next post
Up