Explorar o código

Script for check RAID and HDD state of all drives and controllers

pmacko hai 1 mes
pai
achega
45d1822363
Modificáronse 1 ficheiros con 107 adicións e 0 borrados
  1. 107 0
      raid.sh

+ 107 - 0
raid.sh

@@ -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