Как отправить данные из Zenoss в URL с помощью скрипта Python

С риском быть немного не по теме, я попробую:

У меня есть небольшой скрипт, написанный на Python, который должен POST некоторые данные по конкретному URL. Проблема в:

  • Я интегрирую этот скрипт в zenoss:

Вот путь от zenoss (GUI)

`Events(http://ip:port/zport/dmd/Events/evconsole)->click on some event class->settings->transform(here I copy-paste my script)`

Когда события запускаются, скрипт вызывается, но нет данных, это POSTЯ перешел на другой IP (другой сервер), даже если скрипт работает правильно - я не получаю никаких сообщений об ошибках в журналах или в графическом интерфейсе. Итак, я предполагаю, что есть некоторые ограничения на сетевом уровне и как-то POSTДанные не отправляются Zenoss.

Не могли бы вы, ребята, скажите мне, что я должен изменить (возможно, .conf файл или hosts файл) или что я должен сделать, чтобы иметь возможность POST некоторые данные на другом сервере?

Код здесь (если уместно):

import urllib2 as urllib
from urllib import urlencode
from os.path import join as joinPath
from traceback import print_tb
from os.path import isfile
from sys import exc_info


gh_url = 'http://ip/txsms.cgi'

APPLICATION_PATH = '/srv/sms_alert/'
ALERT_POINT_PATH = joinPath(APPLICATION_PATH, 'alert_contact')

try:
    evt.data = 'Some text'
    isInProduction = False

    if evt.prodState == 1000:
        isInProduction = True

        if isInProduction and isfile(ALERT_POINT_PATH):
            alertContactContent = None
            with open(ALERT_POINT_PATH, 'r') as alertContactFile:
                alertContactContent = alertContactFile.read()
            alertContactContent = alertContactContent.splitlines()

            if alertContactContent:
                evt.summary = '#[ SMS ALERT ]#  {}'.format(evt.summary)
                for alertContactContentLine in alertContactContent:
                    data = {'phonenr': alertContactContentLine, 'smstxt': evt.summary, 'Submit': 'SendSms'}
                    urllib.urlencode(data)
                    req = urllib.Request(gh_url, data)
                    password_manager = urllib.HTTPPasswordMgrWithDefaultRealm()
                    password_manager.add_password(None, gh_url, 'admin', 'password')

                    auth_manager = urllib.HTTPBasicAuthHandler(password_manager)
                    opener = urllib.build_opener(auth_manager)

                    urllib.install_opener(opener)

                    handler = urllib.urlopen(req)
        else:
            evt.summary = '#[ ERROR: SMS ALERT NO CONTACT ]#  {}'.format(evt.summary)

except Exception as e:
    ex_type, ex, tb = exc_info()
    print('\n #[ERROR]#  TRANSFORM: exception: {ex}\n'.format(ex=e))
    print('\n #[ERROR]#  TRANSFORM: exception traceback: {trace}\n'.format(trace=print_tb(tb)))

Итак, чтобы быть более конкретным:

Я пытаюсь подтвердить подлинность, а затем POST некоторые данные для: http://ip/txsms.cgi, Если я запускаю сценарий прямо с моего компьютера с CentOS (и удаляю события - поскольку они могут использоваться только внутри zenoss), он работает и выполняет то, что я хочу, но когда я копирую и вставляю код в Zenoss, данные не T POSTредактор

Есть идеи по этому поводу? (как я могу это сделать)

0 ответов

Другие вопросы по тегам