Current File : //proc/2/task/2/root/etc/node_exporter/scripts/adaptec_old
#!/usr/bin/env python
import subprocess
import os

def run(command):

	commands = command.split()
	res = subprocess.Popen(commands, stderr=subprocess.PIPE, stdout=subprocess.PIPE).communicate()[0]
	return res

def col_value(data, key, index=0):

    col_index = 0

    for line in data.splitlines():
        columns = line.split(' : ')
        col_num = len(columns)
        col_key = columns[0].strip()
        if col_key == key:
            if col_index == index:
                if col_num == 2:
                    return columns[1].strip()
                elif col_num == 3:
                    return columns[1].strip() + ' ' + columns[2].strip()
            col_index += 1

    return False

def last_value(data, key, index=0):

    col_index = 0

    for line in data.splitlines():
        if key in line:
            if col_index == index:
                return line.split()[-1]

    return False

def print_formated(metric, value, index=-1, isString=False):
    if index != -1:
        if not isString:
            print('adaptec_%s{device="%s"} %s' % (metric,index,value))
        else:
            if value == "Online" or value == "Optimal":
                value = 1
                print('adaptec_%s{device="%s"} %s' % (metric,index,value))
            elif ' ' in value:
                splited = value.split(" ")
                print('adaptec_%s{device="%s"} %s' % (metric,index,value))
            else:
                value = 0
                print('adaptec_%s{device="%s"} %s' % (metric,index,value))
    else:
        if not isString:
            print('adaptec_%s %s' % (metric,value))
        else:
            if value == "Online" or value == "Optimal":
                value = 1
                print('adaptec_%s %s' % (metric,value))
            elif ' ' in value:
                splited = value.split(" ")
                if isinstance(splited[0], int):
                    print('adaptec_%s %s' % (metric,splited[0]))
                else:
                    print('adaptec_%s %s' % (metric,0))
            else:
                value = 0
                print('adaptec_%s %s' % (metric,value))


command = '/usr/StorMan/arcconf GETCONFIG 1'
res = run(command)
controller_status = col_value(res, 'Controller Status')
print_formated('controller_status',controller_status,-1,True)

raid_status = col_value(res, 'Status of logical device')
print_formated('raid_status',raid_status,-1,True)

for pd_num in range(10): # 0-9

    if col_value(res, 'State', pd_num):
        state = col_value(res, 'State', pd_num)
        print_formated('state',state,pd_num,True)
        smart_warnings = col_value(res, 'S.M.A.R.T. warnings', pd_num)
        print_formated('smart_warnings',smart_warnings,pd_num,False)