#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Copyright 2017, Florent Thiery ''' Criticality: High Checks that the server RAID array is fine. ''' import glob import subprocess import sys import os GREEN = '\033[92m' RED = '\033[91m' DEF = '\033[0m' def print_red(string): print(RED + string + DEF) def print_green(string): print(GREEN + string + DEF) def check_raid(dev): cmd = 'mdadm -D %s' % dev status, output = subprocess.getstatusoutput(cmd) ok = status == 0 print('%s status: %s' % (dev, ok)) return ok if os.path.isfile('/proc/mdstat'): all_ok = True for r in glob.glob('/dev/md*'): # ignore /dev/md folder if os.path.isfile(r): all_ok = min(check_raid(r), all_ok) if all_ok: print_green('Everything fine') else: print_red('Some array is in bad shape') with open('/proc/mdstat', 'r') as f: d = f.read() print(d) sys.exit(not all_ok) else: print('No software RAID array found, untestable') sys.exit(2)