raid.sh 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #!/bin/bash
  2. #########################################################################
  3. # Script for check HDD & RAID state #
  4. # Created by PM-DoIT #
  5. # ver 0.2 #
  6. #########################################################################
  7. #---------------------------- VARIABLES --------------------------------#
  8. REP=/tmp/hdd.rep
  9. WEB=/var/www/hdd
  10. test -d $WEB || mkdir $WEB
  11. test -f $TMP && rm -rf $TMP
  12. test -f $LOG && rm -rf $LOG
  13. #----------------------------- WEB-START -------------------------------#
  14. webstart(){
  15. cat > $WEB/hdd.html <<\EOF
  16. <HTML>
  17. <HEAD>
  18. <TITLE>HDD-[SITE]</TITLE>
  19. <link rel="icon" href="logo.ico">
  20. </HEAD>
  21. <BODY border=0 bgcolor="white" text="Black">
  22. <p align="center"><font size="3" face="Verdana" color="#0000FF"><b>HDD [NUM] located on PVE server [DATE]</b></font></p>
  23. <DIV ALIGN=CENTER>
  24. <TABLE WIDTH="100%" BORDER=0>
  25. <TR BGCOLOR="#D9D9D9" VALIGN=center>
  26. <TD WIDTH="25%"<DIV ALIGN=center><b>HDD-MODEL</b></DIV></TD>
  27. <TD WIDTH="25%"<DIV ALIGN=center><b>SERIAL</b></DIV></TD>
  28. <TD WIDTH="15%"<DIV ALIGN=center><b>SIZE</b></DIV></TD>
  29. <TD WIDTH="15%"<DIV ALIGN=center><b>PATH</b></DIV></TD>
  30. <TD WIDTH="10%"<DIV ALIGN=center><b>TEMP</b></DIV></TD>
  31. <TD WIDTH="10%"<DIV ALIGN=center><b>FAIL</b></DIV></TD>
  32. </TR>
  33. EOF
  34. }
  35. #------------------------------ WEB-STOP -------------------------------#
  36. webend(){
  37. cat >> $WEB/hdd.html <<\EOF
  38. </TABLE>
  39. <BR>
  40. </DIV>
  41. </BODY>
  42. </HTML>
  43. EOF
  44. NUM=$(cat $REP | egrep -v "SERIAL|---" | wc -l)
  45. SITE=$(hostname -s | sed 's/-/ /g' | awk '{print $1}')
  46. sed -i "s/NUM/$NUM/g" $WEB/hdd.html
  47. sed -i "s/DATE/`date`/g" $WEB/hdd.html
  48. sed -i "s/SITE/$SITE/g" $WEB/hdd.html
  49. }
  50. #--------------------------- CHECK HDD INFO ----------------------------#
  51. checkhdd(){
  52. echo -e "- \e[1;32mExtracting\e[0m HDD info from PVE hypervisor"
  53. echo "------ ---------- --------" > /tmp/hdd.rai
  54. echo "TYPE SIZE STATUS" >> /tmp/hdd.rai
  55. echo "------ ---------- --------" >> /tmp/hdd.rai
  56. megacli -LDInfo -L0 -a0 > /tmp/hdd.r0
  57. RAI=$(cat /tmp/hdd.r0 | grep Name | sed 's/://g' | awk '{print $2}')
  58. SIZ=$(cat /tmp/hdd.r0 | grep "Size" | egrep -v "Sector|Strip" | awk '{print $3""$4}')
  59. STA=$(cat /tmp/hdd.r0 | grep State | awk '{print $3}')
  60. echo "$RAI $SIZ $STA" >> /tmp/hdd.rai
  61. megacli -LDInfo -L1 -a0 > /tmp/hdd.r1
  62. RAI=$(cat /tmp/hdd.r1 | grep Name | sed 's/://g' | awk '{print $2}')
  63. SIZ=$(cat /tmp/hdd.r1 | grep "Size" | egrep -v "Sector|Strip" | awk '{print $3""$4}')
  64. STA=$(cat /tmp/hdd.r1 | grep State | awk '{print $3}')
  65. echo "$RAI $SIZ $STA" >> /tmp/hdd.rai
  66. echo "------ ---------- --------" >> /tmp/hdd.rai
  67. megacli -PDList -a0 > /tmp/hdd.tmp
  68. echo "-------------------- ---------------- ---------- -------- --- -----" > $REP
  69. echo "HDD-MODEL SERIAL SIZE PATH TEMP FAIL " >> $REP
  70. echo "-------------------- ---------------- ---------- -------- --- -----" >> $REP
  71. SN=$(cat /tmp/hdd.tmp | grep "Inquiry Data" | awk '{print $NF}')
  72. for i in $SN;
  73. do
  74. MODL=$(cat /tmp/hdd.tmp | grep -B15 $i | grep "Inquiry Data" | awk '{print $3"-"$4}')
  75. SIZE=$(cat /tmp/hdd.tmp | grep -B15 $i | grep "Raw Size" | awk '{print $3"GB"}')
  76. PORT=$(cat /tmp/hdd.tmp | grep -B15 $i | grep "Connected Port Number" | awk '{print $4}')
  77. FAIL=$(cat /tmp/hdd.tmp | grep -B20 $i | grep "Predictive Failure Count" | awk '{print $NF}')
  78. TEMP=$(cat /tmp/hdd.tmp | grep -A12 $i | grep "Temperature" | sed 's/://g' | awk '{print $3}')
  79. echo "<TR BGCOLOR=\"#FFFFFF\" VALIGN=center>" >> $WEB/hdd.html
  80. echo "<TD WIDTH=\"25%\"<DIV ALIGN=center>$MODL</DIV></TD>" >> $WEB/hdd.html
  81. echo "<TD WIDTH=\"25%\"<DIV ALIGN=center>$i</DIV></TD>" >> $WEB/hdd.html
  82. echo "<TD WIDTH=\"15%\"<DIV ALIGN=center>$SIZE</DIV></TD>" >> $WEB/hdd.html
  83. echo "<TD WIDTH=\"15%\"<DIV ALIGN=center>$PORT</DIV></TD>" >> $WEB/hdd.html
  84. echo "<TD WIDTH=\"10%\"<DIV ALIGN=center>$TEMP</DIV></TD>" >> $WEB/hdd.html
  85. if [[ "$FAIL" == "0" ]]; then
  86. echo "<TD WIDTH=\"10%\"<DIV ALIGN=center>$FAIL</DIV></TD>" >> $WEB/hdd.html
  87. else
  88. echo "<TD WIDTH=\"10%\"<DIV ALIGN=center style=\"color:red\"><b>$FAIL</b></DIV></TD>" >> $WEB/hdd.html
  89. fi
  90. echo "</TR>" >> $WEB/hdd.html
  91. echo "$MODL $i $SIZE $PORT $TEMP $FAIL" >> $REP
  92. done
  93. echo "-------------------- ---------------- ---------- -------- --- -----" >> $REP
  94. }
  95. #------------------------------- CORE ----------------------------------#
  96. clear
  97. webstart
  98. checkhdd
  99. webend
  100. echo -e "- Final HTML report (\e[1;35mhttp://$(ifconfig vmbr0 | grep -w inet | awk '{print $2}' | sed 's/ //g')/hdd/hdd.html\e[0m)"
  101. cat /tmp/hdd.rai | column -t
  102. cat $REP | column -t