Skip to content
Snippets Groups Projects
test_raid.py 1.02 KiB
#!/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)