我设置了nagios警报,通过jabber与http链接到ack。
是否有可能从远程工作站上的终端运行脚本,该终端将主机名作为参数并确认警报?
./ ack hostname
这种好处虽然看似平凡,却是三倍的。首先,关闭nagios的http加载。其次,nagios http页面最多可能需要10-20秒才能加载,因此我希望节省时间。第三,避免慢速使用鼠标+ web界面+ firefox /其他烦人的浏览器。
理想情况下,我希望一个绑定到键盘快捷键的脚本可以简单地获取最新的警报。最后,我想从操纵杆,按钮和诸如此类的东西中获取输入,并将一个连接到一个绑定到脚本的大红色按钮,这样我就可以通过点击按钮lol来获取最新的nagios警报。 (如果按钮的外壳上有一个屏幕显示警报的文字被取消了,那也会是rad)lol)
取笑你想要的一切,但这实际上对我有用。如果我每个警报可以节省五秒钟,而且我每天收到200个警报,我需要确认,这样每天可以节省15分钟。并不是系统管理员能够自动化自动化的全部内容吗?
谢谢!
答案 0 :(得分:1)
是的,可以通过解析/var/lib/nagios3/retention.dat
文件来确认nagios。
见:
#!/usr/bin/env python
# -*- coding: utf8 -*-
# vim:ts=4:sw=4
import sys
file = "/var/lib/nagios3/retention.dat"
try:
sys.argv[1]
except:
print("Usage:\n"+sys.argv[0]+" <HOST>\n")
sys.exit(1)
f = open(file, "r")
line = f.readline()
c=0
name = {}
state = {}
host = {}
while line:
if "service_description=" in line:
name[c] = line.split("=", 2)[1]
elif "current_state=" in line:
state[c] = line.split("=", 2)[1]
elif "host_name=" in line:
host[c] = line.split("=", 2)[1]
elif "}" in line:
c+=1
line = f.readline()
for i in name:
num = int(state[i])
if num > 0 and sys.argv[1] == host[i].strip():
print(name[i].strip("\n"))
您只需将主机作为参数,脚本将显示损坏的服务。