mirror of
https://github.com/FAUSheppy/monitoring-tools
synced 2025-12-06 03:21:35 +01:00
Compare commits
3 Commits
e3f320b1ba
...
de0ba6d093
| Author | SHA1 | Date | |
|---|---|---|---|
| de0ba6d093 | |||
| 5b27bee900 | |||
| a1763fc692 |
@@ -21,7 +21,6 @@ def exit(status, info):
|
||||
"info" : info }
|
||||
|
||||
r = requests.post(args.monitoring_server, json=content)
|
||||
print(r.content)
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
@@ -39,6 +38,9 @@ if __name__ == "__main__":
|
||||
parser.add_argument("--monitoring-token", 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()
|
||||
|
||||
imap_user = args.imap_user
|
||||
@@ -51,13 +53,16 @@ if __name__ == "__main__":
|
||||
"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()
|
||||
|
||||
# send mail #
|
||||
server = smtplib.SMTP(args.target, args.port)
|
||||
server.starttls(context=context)
|
||||
if args.smtp_sender_pass:
|
||||
server.login(args.sender, args.smtp_sender_pass)
|
||||
server.sendmail(args.sender, args.receiver, message)
|
||||
|
||||
# give server some time to deliver #
|
||||
@@ -66,7 +71,9 @@ if __name__ == "__main__":
|
||||
# check imap #
|
||||
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.select('INBOX')
|
||||
status, messages = imap.search(None, 'ALL')
|
||||
@@ -77,6 +84,9 @@ if __name__ == "__main__":
|
||||
|
||||
for message in messages[0].split(b' '):
|
||||
|
||||
if not message:
|
||||
continue
|
||||
|
||||
status, data = imap.fetch(message, '(RFC822)')
|
||||
|
||||
# check search status #
|
||||
|
||||
@@ -22,18 +22,21 @@ class SystemdStatus(nagiosplugin.Resource):
|
||||
p = subprocess.Popen(['systemctl', '--failed', '--no-legend'],
|
||||
stderr=subprocess.PIPE,
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE)
|
||||
pres, err = p.communicate()
|
||||
stdout=subprocess.PIPE,
|
||||
universal_newlines=True)
|
||||
|
||||
stdout, err = p.communicate()
|
||||
except OSError as e:
|
||||
raise nagiosplugin.CheckError(e)
|
||||
|
||||
if err:
|
||||
raise nagiosplugin.CheckError(err)
|
||||
|
||||
if pres:
|
||||
if stdout:
|
||||
lines = list(filter(lambda x: "service" in x, stdout.split("\n")))
|
||||
result = ""
|
||||
for line in io.StringIO(pres.decode('utf-8')):
|
||||
result = "%s %s" % (result, line.split(' ')[0])
|
||||
for line in lines:
|
||||
result += "{}".format(line.split(' ')[1])
|
||||
|
||||
return [nagiosplugin.Metric('systemd', (False, result), context='systemd')]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user