monit_auth - meetbill/monit_manager GitHub Wiki
monit 认证
1 monit 配置
set httpd port 5024
use address 0.0.0.0
allow admin:monit
2 monit 认证方式
可以通过 requests 和 urllib2 两种方式进行认证,这里推荐使用 urllib2
2.1 urllib2
urllib2.urlopen() 函数不支持验证、cookie 或者其它 HTTP 高级功能。要支持这些功能,必须使用 build_opener() 函数创建自定义 Opener 对象。
创建自定义 Opener 对象
authinfo = urllib2.HTTPBasicAuthHandler()
authinfo.add_password('monit',baseurl,username,password)
opener=urllib2.build_opener(authinfo)
安装 opener 对象作为 urlopen() 使用的全局 opener
urllib2.install_opener(opener)
urllib2.urlopen(self.baseurl,timeout=5)
上面 authinfo.add_password('monit',baseurl,username,password)
add_password(realm,uri,user,passwd)
realm 是与验证相关联的名称或描述信息,取决于远程服务器。uri 是基 URL。user 和 passwd 分别指定用户名和密码。
如何获取 realm
import urllib2
theurl = 'http://127.0.0.1:2812/ping'
req = urllib2.Request(theurl)
try:
print 'urlopen begin'
handle = urllib2.urlopen(req)
print 'urlopen finish'
except IOError, e:
if hasattr(e, 'code'):
if e.code != 401:
print 'We got another error'
print e.code
else:
print 'yes'
print e.headers
print e.headers['www-authenticate']
else:
print r'the string "code" is not in e'
print e
else:
print 'this url can be accessed'
即输出
urlopen begin
yes
Date: Thu, 24 Jan 2019 17:06:17 GMT
Server: monit 5.25.2
Content-Length: 361
Connection: close
Content-Type: text/html
WWW-Authenticate: Basic realm="monit"
2.2 requests
requests 不是 python 自带的库,需要另外安装 easy_install or pip install, 不建议使用
self.baseurl="http://127.0.0.1:2812"
self.auth = requests.auth.HTTPBasicAuth(username, password)
// 通过 respose.status_code 是否为 200 检测是否登陆成功
response = requests.get(self.baseurl,auth=self.auth)
// 获取状态信息,xml 格式
url = self.baseurl + '/_status?format=xml'
response = requests.get(url, auth=self.auth)