Przeglądaj źródła

Extended new web design dashboard

pmacko 2 dni temu
rodzic
commit
7cf5931a60
1 zmienionych plików z 74 dodań i 47 usunięć
  1. 74 47
      raid.sh

+ 74 - 47
raid.sh

@@ -1,48 +1,69 @@
 #!/bin/bash
 #########################################################################
 #                    Script for check HDD & RAID state                  #
-#                          Created by PM-DoIT                           #
-#                                ver 0.2                                #
+#                    Created by Pavol Macko - DoIT                      #
+#                                  ver 0.4                              #
 #########################################################################
 
 #---------------------------- VARIABLES --------------------------------#
 REP=/tmp/hdd.rep
 WEB=/var/www/hdd
-test -d $WEB || mkdir $WEB
+TMP=/tmp/hdd.tmp
+LOG=/tmp/hdd.log
+test -d $WEB || mkdir -p $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>
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<title>SITE HDD</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>
+<style>
+    body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background-color: #0f172a; color: #f8fafc; margin: 0; padding: 40px 20px; }
+    .container { max-width: 1000px; margin: 0 auto; background: #1e293b; border-radius: 10px; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.5); padding: 30px; border: 1px solid #334155; }
+    h2 { text-align: center; color: #f1f5f9; margin-top: 0; margin-bottom: 6px; font-weight: 600; letter-spacing: -0.025em; }
+    .subtitle { text-align: center; color: #94a3b8; font-size: 0.9em; margin-bottom: 30px; }
+    table { width: 100%; border-collapse: collapse; }
+    th, td { padding: 14px 16px; text-align: center; border-bottom: 1px solid #334155; }
+    th { background-color: #0f172a; color: #cbd5e1; font-size: 0.8em; text-transform: uppercase; letter-spacing: 0.08em; font-weight: 700; }
+    tr:hover { background-color: #334155; transition: background-color 0.15s ease; }
+    .status-ok { background-color: rgba(16, 185, 129, 0.15); color: #34d399; border: 1px solid rgba(52, 211, 153, 0.3); padding: 4px 12px; border-radius: 20px; font-size: 0.85em; font-weight: 600; display: inline-block; }
+    .status-fail { background-color: rgba(239, 68, 68, 0.15); color: #fca5a5; border: 1px solid rgba(252, 165, 165, 0.3); padding: 4px 12px; border-radius: 20px; font-size: 0.85em; font-weight: 600; display: inline-block; }
+</style>
+</head>
+<body>
+<div class="container">
+    <h2>Disk overview on server [SITE]</h2>
+    <div class="subtitle">Number of disks: <b style="color: #f8fafc;">[NUM]</b> | Last update: DATE</div>
+    <table>
+        <thead>
+            <tr>
+                <th>HDD-Model</th>
+                <th>Serial</th>
+                <th>Size</th>
+                <th>Path</th>
+                <th>Temp</th>
+                <th>Fail</th>
+            </tr>
+        </thead>
+        <tbody>
 EOF
 }
 
 #------------------------------ WEB-STOP -------------------------------#
 webend(){
 cat >> $WEB/hdd.html <<\EOF
-</TABLE>
-<BR>
-</DIV>
-</BODY>
-</HTML>
+        </tbody>
+    </table>
+</div>
+</body>
+</html>
 EOF
 NUM=$(cat $REP | egrep -v "SERIAL|---" | wc -l)
 SITE=$(hostname -s | sed 's/-/ /g' | awk '{print $1}')
@@ -54,54 +75,60 @@ 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.rac
+echo -e "\e[1;37mHW-RAID-CONTROLER\e[0m" >> /tmp/hdd.rac
+echo "--------------------------------------" >> /tmp/hdd.rac
+CON=$(megacli -ShowSummary -aALL | grep ProductName | awk '{$1=$2="";print $0}' | sed 's/  //g')
+echo -e "\e[1;36m$CON\e[0m" >>/tmp/hdd.rac
 echo "------ ---------- --------" > /tmp/hdd.rai
-echo "TYPE SIZE STATUS" >> /tmp/hdd.rai
+echo -e "\e[1;37mTYPE SIZE STATUS\e[0m" >> /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
+echo -e "\e[1;36m$RAI $SIZ $STA\e[0m" >> /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 -e "\e[1;36m$RAI $SIZ $STA\e[0m" >> /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 -e "\e[1;37mHDD-MODEL SERIAL SIZE PATH TEMP FAIL\e[0m" >> $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
+    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}')
+    if [[ "$FAIL" == "0" ]]; then
+        FAIL_HTML="<span class=\"status-ok\">0</span>"
+    else
+        FAIL_HTML="<span class=\"status-fail\">$FAIL</span>"
+    fi
+    echo "<tr>" >> $WEB/hdd.html
+    echo "<td>$MODL</td>" >> $WEB/hdd.html
+    echo "<td>$i</td>" >> $WEB/hdd.html
+    echo "<td>$SIZE</td>" >> $WEB/hdd.html
+    echo "<td>$PORT</td>" >> $WEB/hdd.html
+    echo "<td>$TEMP</td>" >> $WEB/hdd.html
+    echo "<td>$FAIL_HTML</td>" >> $WEB/hdd.html
+    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.rac
 cat /tmp/hdd.rai | column -t
 cat $REP | column -t