检查“MK不”';无法读取远程主机上的本地python检查

检查“MK不”';无法读取远程主机上的本地python检查,python,check-mk,Python,Check Mk,我正在尝试编写一个本地python检查,它向WSDL服务发送一个XML请求,并以XML的形式获取响应。该脚本在服务器(Ubuntu18.04.2LTS服务器)上运行良好,并打印出我想要的结果。但是check_mk(安装在另一台服务器上)没有完全读取此输出 我想运行脚本的服务器在Ubuntu 18.04.2 LTS上运行Python 2.7.15rc1,但check_mk server在CentOS Linux 7(Core)上运行Python 2.7.5。另外,我注意到同一个脚本在check_m

我正在尝试编写一个本地python检查,它向WSDL服务发送一个XML请求,并以XML的形式获取响应。该脚本在服务器(Ubuntu18.04.2LTS服务器)上运行良好,并打印出我想要的结果。但是check_mk(安装在另一台服务器上)没有完全读取此输出

我想运行脚本的服务器在Ubuntu 18.04.2 LTS上运行Python 2.7.15rc1,但check_mk server在CentOS Linux 7(Core)上运行Python 2.7.5。另外,我注意到同一个脚本在check_mk服务器上的工作方式与我预期的不同。我应该更改try-except块,使脚本在Check_MK服务器上工作

#!/usr/bin/python

import requests, base64, re

xml_file = 'request.xml'

hdr = {'Content-Type' : 'text/xml',
    'Authorization' : 'Basic somestring')
    }

with open(xml_file) as xml:
  req = requests.post('http://192.168.39.17:8080/GatewayWebservicesBean?wsdl', data=xml, headers=hdr)
  scode = req.status_code

try:
  resp = re.search(r'<message>(.*?)</message>', req.content).group(1)
except AttributeError:
  print '2 gw_check c=1;0;1;0 Cannot Access to Gateway! Status Code: %s' %scode       #Check_MK doesn't read this output
else:
  if resp == 'Access':
    print '0 eagw_check c=0;0;1;0 OK - Gateway works well'
  else:
    print '2 eagw_check c=1;0;1;0 Please check internal system! Respond from internal system: %s' %resp
#/usr/bin/python
导入请求,base64,re
xml_文件='request.xml'
hdr={'Content-Type':'text/xml',
“授权”:“基本somestring”)
}
以xml形式打开(xml_文件):
req=请求。post('http://192.168.39.17:8080/GatewayWebservicesBean?wsdl,data=xml,headers=hdr)
scode=req.status\U代码
尝试:
resp=重新搜索(r'(.*?),请求内容)。组(1)
除属性错误外:
打印'2 gw_检查c=1;0;1.0无法访问网关!状态代码:%s“%s代码#检查#MK未读取此输出
其他:
如果resp==“访问”:
打印'0 eagw_检查c=0;0;1.0正常-网关工作正常'
其他:
打印'2 eagw_检查c=1;0;1.0请检查内部系统!来自内部系统的响应:%s“%resp”

您是在尝试编写本地检查还是检查mk插件?这是两件完全不同的事情。您将此文件存储在哪里?

您是在尝试编写本地检查还是检查mk插件?这是两件完全不同的事情。您将此文件存储在何处?

我的python脚本也有类似问题,它作为本地检查添加到
/usr/lib/check\u mk\u agent/local/
目录中。此本地脚本已在一台服务器上成功执行,但在另一台服务器上失败。当在服务器中手动调用check_mk_代理时,它成功地执行了脚本。但是当check_mk调用时,输出没有被发送到服务发现。因此,我将python脚本包装在bash脚本中,并将错误重定向为打印输出,如下所示:,
output=$(python/usr/lib/check\u mk\u agent/local/yuge.py 2>&1)

我的python脚本中使用的
dateutil
库无法由check_mk导入。该库是使用pip管理器安装的,在运行时无法导入

因此,我必须使用apt-get而不是pip-post来安装库,本地检查脚本被成功执行,输出被发送到服务发现。检查了另一台工作服务器,发现已使用apt get安装了
dateutil


我的python脚本也有类似的问题,它作为本地检查添加到
/usr/lib/check\u mk\u agent/local/
目录中。此本地脚本已在一台服务器上成功执行,但在另一台服务器上失败。当在服务器中手动调用check_mk_代理时,它成功地执行了脚本。但是当check_mk调用时,输出没有被发送到服务发现。因此,我将python脚本包装在bash脚本中,并将错误重定向为打印输出,如下所示:,
output=$(python/usr/lib/check\u mk\u agent/local/yuge.py 2>&1)

我的python脚本中使用的
dateutil
库无法由check_mk导入。该库是使用pip管理器安装的,在运行时无法导入

因此,我必须使用apt-get而不是pip-post来安装库,本地检查脚本被成功执行,输出被发送到服务发现。检查了另一台工作服务器,发现已使用apt get安装了
dateutil


事实上,我正试图开一张本地支票。正如我从教程中了解到的,编写一个打印smth的python脚本。如“2 eagw_check c=1;0;1;0请检查内部系统!从内部系统响应:”因为标准输出足以运行本地检查。我把这个检查放在路径/usr/lib/check\u mk\u agent/local下实际上,我正在尝试写一个本地检查。正如我从教程中了解到的,编写一个打印smth的python脚本。如“2 eagw_check c=1;0;1;0请检查内部系统!从内部系统响应:”因为标准输出足以运行本地检查。我将这个检查放在/usr/lib/check_mk_agent/localNow路径下,它将输出传递给check_mk服务器,但它不会给出与本地服务器相同的输出。也就是说,当我在放置脚本的主机上运行check_mk_代理时,输出是正常的,但当我从check_mk服务器远程登录到主机时,它会给出错误输出。我认为这是因为python的版本不同。无论如何,(我希望)我更进一步地接近解决方案。非常感谢。现在,它将输出传递给check_mk服务器,但它不会给出与本地服务器相同的输出。也就是说,当我在放置脚本的主机上运行check_mk_代理时,输出是正常的,但当我从check_mk服务器远程登录到主机时,它会给出错误输出。我认为这是因为python的版本不同。无论如何,(我希望)我更进一步地接近解决方案。非常感谢。