|
|
@@ -0,0 +1,107 @@
|
|
|
+#!/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
|
|
|
+<HTML>
|
|
|
+<HEAD>
|
|
|
+<TITLE>HDD-[SITE]</TITLE>
|
|
|
+<link rel="icon" href="logo.ico">
|
|
|
+</HEAD>
|
|
|
+<BODY border=0 bgcolor="white" text="Black">
|
|
|
+<p align="center"><font size="3" face="Verdana" color="#0000FF"><b>HDD [NUM] located on PVE server [DATE]</b></font></p>
|
|
|
+<DIV ALIGN=CENTER>
|
|
|
+<TABLE WIDTH="100%" BORDER=0>
|
|
|
+<TR BGCOLOR="#D9D9D9" VALIGN=center>
|
|
|
+<TD WIDTH="25%"<DIV ALIGN=center><b>HDD-MODEL</b></DIV></TD>
|
|
|
+<TD WIDTH="25%"<DIV ALIGN=center><b>SERIAL</b></DIV></TD>
|
|
|
+<TD WIDTH="15%"<DIV ALIGN=center><b>SIZE</b></DIV></TD>
|
|
|
+<TD WIDTH="15%"<DIV ALIGN=center><b>PATH</b></DIV></TD>
|
|
|
+<TD WIDTH="10%"<DIV ALIGN=center><b>TEMP</b></DIV></TD>
|
|
|
+<TD WIDTH="10%"<DIV ALIGN=center><b>FAIL</b></DIV></TD>
|
|
|
+</TR>
|
|
|
+EOF
|
|
|
+}
|
|
|
+
|
|
|
+#------------------------------ WEB-STOP -------------------------------#
|
|
|
+webend(){
|
|
|
+cat >> $WEB/hdd.html <<\EOF
|
|
|
+</TABLE>
|
|
|
+<BR>
|
|
|
+</DIV>
|
|
|
+</BODY>
|
|
|
+</HTML>
|
|
|
+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 "<TR BGCOLOR=\"#FFFFFF\" VALIGN=center>" >> $WEB/hdd.html
|
|
|
+echo "<TD WIDTH=\"25%\"<DIV ALIGN=center>$MODL</DIV></TD>" >> $WEB/hdd.html
|
|
|
+echo "<TD WIDTH=\"25%\"<DIV ALIGN=center>$i</DIV></TD>" >> $WEB/hdd.html
|
|
|
+echo "<TD WIDTH=\"15%\"<DIV ALIGN=center>$SIZE</DIV></TD>" >> $WEB/hdd.html
|
|
|
+echo "<TD WIDTH=\"15%\"<DIV ALIGN=center>$PORT</DIV></TD>" >> $WEB/hdd.html
|
|
|
+echo "<TD WIDTH=\"10%\"<DIV ALIGN=center>$TEMP</DIV></TD>" >> $WEB/hdd.html
|
|
|
+if [[ "$FAIL" == "0" ]]; then
|
|
|
+echo "<TD WIDTH=\"10%\"<DIV ALIGN=center>$FAIL</DIV></TD>" >> $WEB/hdd.html
|
|
|
+else
|
|
|
+echo "<TD WIDTH=\"10%\"<DIV ALIGN=center style=\"color:red\"><b>$FAIL</b></DIV></TD>" >> $WEB/hdd.html
|
|
|
+fi
|
|
|
+echo "</TR>" >> $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
|