45 lines
1,017 B
Python
45 lines
1,017 B
Python
#!/usr/bin/env python
|
|
#
|
|
# very simple python script to parse out /proc/mdstat
|
|
# and give results for nagios to monitor
|
|
#
|
|
|
|
import sys
|
|
import string
|
|
|
|
devices = []
|
|
|
|
try:
|
|
mdstat = string.split(open('/proc/mdstat').read(), '\n')
|
|
except IOError:
|
|
# seems we have no software raid on this machines
|
|
sys.exit(0)
|
|
|
|
error = ""
|
|
i = 0
|
|
for line in mdstat:
|
|
if line[0:2] == 'md':
|
|
device = string.split(line)[0]
|
|
devices.append(device)
|
|
status = string.split(mdstat[i+1])[3]
|
|
if string.count(status, "_"):
|
|
# see if we can figure out what's going on
|
|
err = string.split(mdstat[i+2])
|
|
msg = "device=%s status=%s" % (device, status)
|
|
if len(err) > 0:
|
|
msg = msg + " rebuild=%s" % err[0]
|
|
|
|
if not error:
|
|
error = msg
|
|
else:
|
|
error = error + ", " + msg
|
|
i = i + 1
|
|
|
|
if not error:
|
|
print "DEVICES %s OK" % " ".join(devices)
|
|
sys.exit(0)
|
|
|
|
else:
|
|
print error
|
|
sys.exit(2)
|
|
|