#! /bin/bash : << =cut =head1 NAME smart_array_disks_temperature - Plugin to monitor temperature of disk on HP Raid cards. =head1 APPLICABLE SYSTEMS Only tested on HP Microserver Gen8 with Smart Array P222. Maybe works with other HP Prolant Raid cards. =head1 CONFIGURATION /etc/munin/plugin-conf.d/global or other file in that dir must contain: [smart_array_disks_temperature*] user root =head1 NOTES Uses the command "ssacli" =head1 AUTHOR Damien Broqua (https://framagit.org/dbroqua) =head1 LICENSE GPLv2 =head1 MAGIC MARKERS #%# family=auto #%# capabilities=autoconf =cut IFS=$'\n' # Function to list all slots getSlots () { list=`ssacli ctrl all show config|grep "Slot"|awk -F'Slot ' '{print $2}'|cut -d' ' -f1` return $list } # Function to get disk of one specified slot getDisks () { slot=$1 list=`ssacli ctrl slot=${slot} pd all show status|grep "physicaldrive"|awk -F 'physicaldrive' '{print $2}'|cut -d ' ' -f2` for disk in ${list[@]} ; do if [ "${2}" = "config" ]; then diskName=`ssacli ctrl slot=${slot} pd ${disk} show detail|grep "Model"|cut -d':' -f2` echo "${slot}${disk}CurrentTemperature(C).label (${disk}) ${diskName} " else diskDetails=`ssacli ctrl slot=${slot} pd ${disk} show detail|grep 'Current Temperature'` temps="${diskDetails}" for temp in ${temps[@]}; do line="$(echo -e "${temp}" | tr -d '[:space:]'|sed -e "s/:/.value /g")" echo ${slot}${disk}${line} done fi done } # Config, set graph title if [ "${1}" = "config" ]; then echo "graph_title SMART Array disk temperature" echo "graph_vlabel Degrees celcius" echo "graph_category sensors" fi # Start script by getting list of slots getSlots slots=$? # For each slot, get disks for i in ${list[@]} ; do getDisks $i $1 done