Compare commits

...

3 Commits

2 changed files with 21 additions and 8 deletions

View File

@@ -21,7 +21,6 @@ def exit(status, info):
"info" : info } "info" : info }
r = requests.post(args.monitoring_server, json=content) r = requests.post(args.monitoring_server, json=content)
print(r.content)
sys.exit(0) sys.exit(0)
@@ -39,6 +38,9 @@ if __name__ == "__main__":
parser.add_argument("--monitoring-token", required=True) parser.add_argument("--monitoring-token", required=True)
parser.add_argument("--monitoring-service-name", required=True) parser.add_argument("--monitoring-service-name", required=True)
parser.add_argument("--smtp-sender-pass", help="Sender password for SMTP if login is required")
parser.add_argument("--imap-target", help="IMAP-Target Server if different from '--target''")
args = parser.parse_args() args = parser.parse_args()
imap_user = args.imap_user imap_user = args.imap_user
@@ -51,13 +53,16 @@ if __name__ == "__main__":
"origin" : socket.gethostname(), "origin" : socket.gethostname(),
} }
message = message = 'Subject: Monitoring Challenge\n\n{}'.format(json.dumps(challenge)) message = 'From: {}\nTo: {}\nSubject: Monitoring Challenge\n\n{}'.format(
args.sender, args.receiver, json.dumps(challenge))
context = ssl.create_default_context() context = ssl.create_default_context()
# send mail # # send mail #
server = smtplib.SMTP(args.target, args.port) server = smtplib.SMTP(args.target, args.port)
server.starttls(context=context) server.starttls(context=context)
if args.smtp_sender_pass:
server.login(args.sender, args.smtp_sender_pass)
server.sendmail(args.sender, args.receiver, message) server.sendmail(args.sender, args.receiver, message)
# give server some time to deliver # # give server some time to deliver #
@@ -66,7 +71,9 @@ if __name__ == "__main__":
# check imap # # check imap #
for x in range(0,5): for x in range(0,5):
with imaplib.IMAP4_SSL(args.target) as imap: imap_target = args.imap_target or args.target
with imaplib.IMAP4_SSL(imap_target) as imap:
imap.login(imap_user, args.imap_pass) imap.login(imap_user, args.imap_pass)
imap.select('INBOX') imap.select('INBOX')
status, messages = imap.search(None, 'ALL') status, messages = imap.search(None, 'ALL')
@@ -77,6 +84,9 @@ if __name__ == "__main__":
for message in messages[0].split(b' '): for message in messages[0].split(b' '):
if not message:
continue
status, data = imap.fetch(message, '(RFC822)') status, data = imap.fetch(message, '(RFC822)')
# check search status # # check search status #

View File

@@ -22,18 +22,21 @@ class SystemdStatus(nagiosplugin.Resource):
p = subprocess.Popen(['systemctl', '--failed', '--no-legend'], p = subprocess.Popen(['systemctl', '--failed', '--no-legend'],
stderr=subprocess.PIPE, stderr=subprocess.PIPE,
stdin=subprocess.PIPE, stdin=subprocess.PIPE,
stdout=subprocess.PIPE) stdout=subprocess.PIPE,
pres, err = p.communicate() universal_newlines=True)
stdout, err = p.communicate()
except OSError as e: except OSError as e:
raise nagiosplugin.CheckError(e) raise nagiosplugin.CheckError(e)
if err: if err:
raise nagiosplugin.CheckError(err) raise nagiosplugin.CheckError(err)
if pres: if stdout:
lines = list(filter(lambda x: "service" in x, stdout.split("\n")))
result = "" result = ""
for line in io.StringIO(pres.decode('utf-8')): for line in lines:
result = "%s %s" % (result, line.split(' ')[0]) result += "{}".format(line.split(' ')[1])
return [nagiosplugin.Metric('systemd', (False, result), context='systemd')] return [nagiosplugin.Metric('systemd', (False, result), context='systemd')]