#!/bin/bash ######################################################################### # Script for check HDD & RAID state # # Created by PM-DoIT # # ver 0.2 # ######################################################################### #---------------------------- VARIABLES --------------------------------# REP=/tmp/hdd.rep WEB=/var/www/hdd test -d $WEB || mkdir $WEB test -f $TMP && rm -rf $TMP test -f $LOG && rm -rf $LOG #----------------------------- WEB-START -------------------------------# webstart(){ cat > $WEB/hdd.html <<\EOF HDD-[SITE]

HDD [NUM] located on PVE server [DATE]

EOF } #------------------------------ WEB-STOP -------------------------------# webend(){ cat >> $WEB/hdd.html <<\EOF
HDD-MODEL SERIAL SIZE PATH TEMP FAIL

EOF NUM=$(cat $REP | egrep -v "SERIAL|---" | wc -l) SITE=$(hostname -s | sed 's/-/ /g' | awk '{print $1}') sed -i "s/NUM/$NUM/g" $WEB/hdd.html sed -i "s/DATE/`date`/g" $WEB/hdd.html sed -i "s/SITE/$SITE/g" $WEB/hdd.html } #--------------------------- CHECK HDD INFO ----------------------------# checkhdd(){ echo -e "- \e[1;32mExtracting\e[0m HDD info from PVE hypervisor" echo "------ ---------- --------" > /tmp/hdd.rai echo "TYPE SIZE STATUS" >> /tmp/hdd.rai echo "------ ---------- --------" >> /tmp/hdd.rai megacli -LDInfo -L0 -a0 > /tmp/hdd.r0 RAI=$(cat /tmp/hdd.r0 | grep Name | sed 's/://g' | awk '{print $2}') SIZ=$(cat /tmp/hdd.r0 | grep "Size" | egrep -v "Sector|Strip" | awk '{print $3""$4}') STA=$(cat /tmp/hdd.r0 | grep State | awk '{print $3}') echo "$RAI $SIZ $STA" >> /tmp/hdd.rai megacli -LDInfo -L1 -a0 > /tmp/hdd.r1 RAI=$(cat /tmp/hdd.r1 | grep Name | sed 's/://g' | awk '{print $2}') SIZ=$(cat /tmp/hdd.r1 | grep "Size" | egrep -v "Sector|Strip" | awk '{print $3""$4}') STA=$(cat /tmp/hdd.r1 | grep State | awk '{print $3}') echo "$RAI $SIZ $STA" >> /tmp/hdd.rai echo "------ ---------- --------" >> /tmp/hdd.rai megacli -PDList -a0 > /tmp/hdd.tmp echo "-------------------- ---------------- ---------- -------- --- -----" > $REP echo "HDD-MODEL SERIAL SIZE PATH TEMP FAIL " >> $REP echo "-------------------- ---------------- ---------- -------- --- -----" >> $REP SN=$(cat /tmp/hdd.tmp | grep "Inquiry Data" | awk '{print $NF}') for i in $SN; do MODL=$(cat /tmp/hdd.tmp | grep -B15 $i | grep "Inquiry Data" | awk '{print $3"-"$4}') SIZE=$(cat /tmp/hdd.tmp | grep -B15 $i | grep "Raw Size" | awk '{print $3"GB"}') PORT=$(cat /tmp/hdd.tmp | grep -B15 $i | grep "Connected Port Number" | awk '{print $4}') FAIL=$(cat /tmp/hdd.tmp | grep -B20 $i | grep "Predictive Failure Count" | awk '{print $NF}') TEMP=$(cat /tmp/hdd.tmp | grep -A12 $i | grep "Temperature" | sed 's/://g' | awk '{print $3}') echo "" >> $WEB/hdd.html echo "$MODL" >> $WEB/hdd.html echo "$i" >> $WEB/hdd.html echo "$SIZE" >> $WEB/hdd.html echo "$PORT" >> $WEB/hdd.html echo "$TEMP" >> $WEB/hdd.html if [[ "$FAIL" == "0" ]]; then echo "$FAIL" >> $WEB/hdd.html else echo "$FAIL" >> $WEB/hdd.html fi echo "" >> $WEB/hdd.html echo "$MODL $i $SIZE $PORT $TEMP $FAIL" >> $REP done echo "-------------------- ---------------- ---------- -------- --- -----" >> $REP } #------------------------------- CORE ----------------------------------# clear webstart checkhdd webend echo -e "- Final HTML report (\e[1;35mhttp://$(ifconfig vmbr0 | grep -w inet | awk '{print $2}' | sed 's/ //g')/hdd/hdd.html\e[0m)" cat /tmp/hdd.rai | column -t cat $REP | column -t