#!/bin/bash DO_JSON=0 MY_PATH=$(dirname $0) DEVICE="" RAID_NAME="unknown" RAID_LEVEL="unknown" NUM_MEMBERS="unknown" DEVICES="unknown" get_raid_level() { OUT=$(mdadm --detail ${1} | grep 'Raid Level' | tr -d ' ' | cut -d':' -f2) echo ${OUT} } get_raid_num_members() { OUT=$(mdadm --detail ${1} | grep 'Raid Devices' | tr -d ' ' | cut -d':' -f2) echo ${OUT} } get_raid_members() { MDSTAT="/proc/mdstat" OUT=$(grep -w ${1} ${MDSTAT} | tr ' ' '\n' | sed -n 's|^|/dev/|;s/\[.*//p' | tr '\r\n' ' ') echo ${OUT} } set_raid_info() { RAID_NAME=$(strip_device_name ${1}) # check if mdadm is installed if ! hash mdadm 2>/dev/null; then return fi if [ -e /dev/${RAID_NAME} ]; then RAID_LEVEL=$(get_raid_level "/dev/${RAID_NAME}") NUM_MEMBERS=$(get_raid_num_members "/dev/${RAID_NAME}") DEVICES=$(get_raid_members ${RAID_NAME}) fi } output_results_json() { DEVICES_LIST=$(list_to_json "${DEVICES}") echo "{" echo " \"raid_name\": \"${RAID_NAME}\"," echo " \"raid_level\": \"${RAID_LEVEL}\"," echo " \"num_members\": \"${NUM_MEMBERS}\"," echo " \"devices\": ${DEVICES_LIST}" echo "}" } output_results() { do_json=${1} if [ ${do_json} -eq 1 ]; then output_results_json else DEVICES_LIST=$(list_to_human_readable "${DEVICES}") echo "raid_name:${RAID_NAME}" echo "raid_level:${RAID_LEVEL}" echo "num_members:${NUM_MEMBERS}" echo "devices:${DEVICES_LIST}" fi } ##### MAIN ##### source ${MY_PATH}/general_funcs.bash must_run_as_root while getopts "jd:" opt; do case ${opt} in d) DEVICE=${OPTARG} ;; j) DO_JSON=1 ;; esac done if [ ! -z ${DEVICE} ]; then set_raid_info ${DEVICE} fi output_results ${DO_JSON} exit 0