Forráskód Böngészése

Extended new web design dashboard

pmacko 2 napja
szülő
commit
867dedd398
1 módosított fájl, 173 hozzáadás és 91 törlés
  1. 173 91
      pve_backup.sh

+ 173 - 91
pve_backup.sh

@@ -1,112 +1,195 @@
 #!/bin/bash
 #########################################################################
-#                 Script for extract PVE backup VM status               #
+#               Script for extract PVE backup VM status II              #
 #                      Created by Pavol Macko - DoIT                    #
-#                                 ver 0.4                               #
+#                                 ver 0.3                               #
 #########################################################################
 
 #---------------------------- VARIABLES --------------------------------#
+SRC="usb"
 SRV=$(hostname -s)
-SRC="/var/www/backup/"
-test -d $SRC || mkdir $SRC
-WEB="$SRC/index.html"
+FLD="/var/www/backup"
+test -d $FLD || mkdir $FLD
+WEB="$FLD/index.html"
+test -d /mnt/pve/$SRC/ || echo -e "- \e[1;31mWrong\e[0m source variable [\e[1;36m$SRC\e[0m]"
+test -d /mnt/pve/$SRC/ || exit 1
+
+#------------------------------- DATE ----------------------------------#
+aid(){
+date +%s
+}
 
 #--------------------------- EXTRACT-ALL -------------------------------#
 extall(){
 echo -e "  \e[1;32mACTUAL SUMMARY\e[0m of \e[1;36mALL\e[0m extracted PROXMOX virtual server \e[1;35mbackups\e[0m from server \e[1;33m$SRV\e[0m "
-echo "--- --------- ---------- ---------- ---------- -------- -------- ------ --------" > /tmp/pveb.log
-echo "PID HOSTNAME START-DATE START-TIME END-DATE END-TIME HDD-SIZE DUR(s) BCK-SIZE" >> /tmp/pveb.log
-echo "--- --------- ---------- ---------- ---------- -------- -------- ------ --------" >> /tmp/pveb.log
-LST=$(egrep -lRi "backup" /var/log/pve/tasks/* | grep pam)
-for b in $LST;
-do
-cat $b | grep "Starting Backup" | awk '{print $6}' > /tmp/pbi
-cat $b | grep "Backup started" | awk '{print $5,$6}' > /tmp/pbs
-cat $b | grep "VM Name" | awk '{print $4}' > /tmp/pbn
-cat $b | grep "Backup finished" | awk '{print $5,$6}' > /tmp/pbe
-cat $b | grep "transferred" | awk '{print $3$4,$6}' | sed 's/\.00//g' | sed 's/i//g' > /tmp/pbt
-SIZ=$(cat $b | grep "archive file" | awk '{print $5}')
-if [ ! -z "$SIZ" ];
-then
-        cat $b | grep "archive file" | awk '{print $5}' > /tmp/pbz
-else
-        cat $b | grep "backup is sparse" | awk '{print $5$6}' > /tmp/pbz
-fi
-paste /tmp/pbi /tmp/pbn /tmp/pbs /tmp/pbe /tmp/pbt /tmp/pbz >> /tmp/pveb
-done
-cat /tmp/pveb | sort -n >> /tmp/pveb.log
-echo "--- --------- ---------- ---------- ---------- -------- -------- ------ --------" >> /tmp/pveb.log
-cat /tmp/pveb.log | column -t
-}
-
-#--------------------------- EXTRACT-LAST -------------------------------#
-extlast(){
-echo -e "  \e[1;32mACTUAL SUMMARY\e[0m of \e[1;36mLAST\e[0m extracted PROXMOX virtual server \e[1;35mbackups\e[0m from server \e[1;33m$SRV\e[0m "
-echo "--- --------- ---------- ---------- ---------- -------- -------- ------ --------" > /tmp/pvebt.log
-echo "PID HOSTNAME START-DATE START-TIME END-DATE END-TIME HDD-SIZE DUR(s) BCK-SIZE" >> /tmp/pvebt.log
-echo "--- --------- ---------- ---------- ---------- -------- -------- ------ --------" >> /tmp/pvebt.log
-PID=$(cat /tmp/pveb.log | awk '{print $1}' | egrep -v "\---|PID" | sort | uniq)
-for t in $PID;
+echo "---------- --------- ---------- ---------- ---------- -------- -------- -------- ----------" > /tmp/pveb.log
+echo "AUTOID HOSTNAME START-DATE START-TIME END-DATE END-TIME HDD-SIZE BCK-SIZE DUR" >> /tmp/pveb.log
+echo "---------- --------- ---------- ---------- ---------- -------- -------- -------- ----------" >> /tmp/pveb.log
+LST=$(ls /mnt/pve/$SRC/dump/*.log)
+for i in $LST;
 do
-cat /tmp/pveb.log | grep -w $t | tail -1 >> /tmp/pvebt.log
+SDAT=$(cat $i | grep "VM Name" | awk '{print $1}')
+STIM=$(cat $i | grep "VM Name" | awk '{print $2}')
+HST=$(cat $i | grep "VM Name" | awk '{print $NF}')
+DSK=$(cat $i | grep "include disk" | egrep -v "efidisk|tpmstat" | awk '{print $NF}')
+ARC=$(cat $i | grep "archive file" | awk '{print $NF}')
+DUR=$(cat $i | grep "Finished" | awk '{print $NF}')
+FDAT=$(cat $i | grep "Finished" | awk '{print $1}')
+FTIM=$(cat $i | grep "Finished" | awk '{print $2}')
+echo "$(aid) $HST $SDAT $STIM $FDAT $FTIM $DSK $ARC $DUR" | awk 'NF >= 2' >> /tmp/pveb.log
+sleep 1
 done
-sed -i "s/[[:space:]]\+/ /g" /tmp/pvebt.log
-echo "--- --------- ---------- ---------- ---------- -------- -------- ------ --------" >> /tmp/pvebt.log
+echo "---------- --------- ---------- ---------- ---------- -------- -------- -------- ----------" >> /tmp/pveb.log
+sed -i 's/(//g' /tmp/pveb.log
+sed -i 's/)//g' /tmp/pveb.log
 }
 
 #-------------------------- GENERATE-WEB -------------------------------#
 extweb(){
-cat > $WEB <<\EOG
-<html>
+  cat > $WEB <<EOG
+<!DOCTYPE html>
+<html lang="sk">
 <head>
-<title>PVE-Backups</title>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>$SRV Backup</title>
+  <style>
+    :root {
+      --bg: #111827;
+      --card-bg: #1f2937;
+      --border: #374151;
+      --text: #f9fafb;
+      --text-muted: #9ca3af;
+      --accent: #e57008;
+      --hover: #2d3748;
+    }
+    body {
+      font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
+      background-color: var(--bg);
+      color: var(--text);
+      margin: 0;
+      padding: 2rem;
+      display: flex;
+      justify-content: center;
+    }
+    .container {
+      width: 100%;
+      max-width: 1200px;
+    }
+    .header {
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      margin-bottom: 1.5rem;
+      border-bottom: 2px solid var(--accent);
+      padding-bottom: 0.75rem;
+    }
+    h1 {
+      margin: 0;
+      font-size: 1.5rem;
+      font-weight: 600;
+      display: flex;
+      align-items: center;
+      gap: 0.5rem;
+    }
+    h1 span {
+      color: var(--accent);
+    }
+    .table-wrapper {
+      background: var(--card-bg);
+      border-radius: 8px;
+      overflow-x: auto;
+      border: 1px solid var(--border);
+      box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.3);
+    }
+    table {
+      width: 100%;
+      border-collapse: collapse;
+      text-align: left;
+      font-size: 0.9rem;
+    }
+    th {
+      background-color: #111827;
+      color: var(--text-muted);
+      font-weight: 600;
+      text-transform: uppercase;
+      font-size: 0.75rem;
+      letter-spacing: 0.05em;
+      padding: 0.85rem 1rem;
+      border-bottom: 1px solid var(--border);
+    }
+    td {
+      padding: 0.85rem 1rem;
+      border-bottom: 1px solid var(--border);
+      white-space: nowrap;
+    }
+    tr:last-child td {
+      border-bottom: none;
+    }
+    tr:hover {
+      background-color: var(--hover);
+    }
+    .hostname {
+      font-weight: 600;
+      color: #60a5fa;
+    }
+    .footer {
+      margin-top: 1rem;
+      text-align: center;
+      font-size: 0.8rem;
+      color: var(--text-muted);
+    }
+  </style>
 </head>
-<BODY>
-<TABLE WIDTH="100%" BORDER=1>
-<TBODY>
-<TR BGCOLOR="#C0C0C0" VALIGN=center>
-<TD WIDTH="10%"><DIV ALIGN=center><B>PID</B></DIV></TD>
-<TD WIDTH="20%"><DIV ALIGN=center><B>HOSTNAME</B></DIV></TD>
-<TD WIDTH="10%"><DIV ALIGN=center><B>START-DATE</B></DIV></TD>
-<TD WIDTH="10%"><DIV ALIGN=center><B>START-TIME</B></DIV></TD>
-<TD WIDTH="10%"><DIV ALIGN=center><B>END-DATE</B></DIV></TD>
-<TD WIDTH="10%"><DIV ALIGN=center><B>END-TIME</B></DIV></TD>
-<TD WIDTH="10%"><DIV ALIGN=center><B>HDD-SIZE</B></DIV></TD>
-<TD WIDTH="10%"><DIV ALIGN=center><B>DUR(s)</B></DIV></TD>
-<TD WIDTH="10%"><DIV ALIGN=center><B>BCK-SIZE</B></DIV></TD>
-</TR>
+<body>
+  <div class="container">
+    <div class="header">
+      <h1>PVE <span>Backup Report</span></h1>
+      <div>Server: <strong>$SRV</strong></div>
+    </div>
+    <div class="table-wrapper">
+      <table>
+        <thead>
+          <tr>
+            <th>Hostname</th>
+            <th>Start Date</th>
+            <th>Start Time</th>
+            <th>End Date</th>
+            <th>End Time</th>
+            <th>HDD Size</th>
+            <th>Bck Size</th>
+            <th>Duration</th>
+          </tr>
+        </thead>
+        <tbody>
 EOG
-IDS=$(cat /tmp/pvebt.log | grep "^[0-9]" | awk '{print $9}')
-for e in $IDS;
-do
-ID=$(cat /tmp/pvebt.log | grep -w "$e" | awk '{print $1}')
-HST=$(cat /tmp/pvebt.log | grep -w "$e" | awk '{print $2}')
-SDATE=$(cat /tmp/pvebt.log | grep -w "$e" | awk '{print $3}')
-STIME=$(cat /tmp/pvebt.log | grep -w "$e" | awk '{print $4}')
-EDATE=$(cat /tmp/pvebt.log | grep -w "$e" | awk '{print $5}')
-ETIME=$(cat /tmp/pvebt.log | grep -w "$e" | awk '{print $6}')
-HSIZE=$(cat /tmp/pvebt.log | grep -w "$e" | awk '{print $7}')
-DUR=$(cat /tmp/pvebt.log | grep -w "$e" | awk '{print $8}')
-BSIZE=$(cat /tmp/pvebt.log | grep -w "$e" | awk '{print $9}')
-echo "<TR VALIGN=center>" >> $WEB
-echo "<TD WIDTH=\"10%\"><DIV ALIGN=center>$ID</DIV></TD>" >> $WEB
-echo "<TD WIDTH=\"20%\"><DIV ALIGN=center>$HST</DIV></TD>" >> $WEB
-echo "<TD WIDTH=\"10%\"><DIV ALIGN=center>$SDATE</DIV></TD>" >> $WEB
-echo "<TD WIDTH=\"10%\"><DIV ALIGN=center>$STIME</DIV></TD>" >> $WEB
-echo "<TD WIDTH=\"10%\"><DIV ALIGN=center>$EDATE</DIV></TD>" >> $WEB
-echo "<TD WIDTH=\"10%\"><DIV ALIGN=center>$ETIME</DIV></TD>" >> $WEB
-echo "<TD WIDTH=\"10%\"><DIV ALIGN=center>$HSIZE</DIV></TD>" >> $WEB
-echo "<TD WIDTH=\"10%\"><DIV ALIGN=center>$DUR</DIV></TD>" >> $WEB
-echo "<TD WIDTH=\"10%\"><DIV ALIGN=center>$e</DIV></TD>" >> $WEB
-echo "</TR>" >> $WEB
-done
-cat >> $WEB <<EOX
-<TR BGCOLOR="#C0C0C0" VALIGN=center>
-<TD COlSPAN="9" WIDTH="100%"><DIV ALIGN=center><B>GENERATED: <I>`date +%d/%m/%Y" "%T`</I></B></DIV></TD>
-</TR>
-</TBODY>
-</TABLE>
-</BODY>
+  while read -r line; do
+    if [[ "$line" =~ ^[0-9]+ ]]; then
+      read -r _ hst sdate stime edate etime hsize bsize dura <<< "$line"
+      cat >> $WEB <<EOF
+          <tr>
+            <td class="hostname">$hst</td>
+            <td>$sdate</td>
+            <td>$stime</td>
+            <td>$edate</td>
+            <td>$etime</td>
+            <td>$hsize</td>
+            <td>$bsize</td>
+            <td>$dura</td>
+          </tr>
+EOF
+    fi
+  done < /tmp/pveb.log
+  cat >> $WEB <<EOX
+        </tbody>
+      </table>
+    </div>
+    <div class="footer">
+      Generated: $(date +'%d.%m.%Y %H:%M:%S')
+    </div>
+  </div>
+</body>
+</html>
 EOX
 }
 
@@ -114,7 +197,6 @@ EOX
 rm -rf /tmp/pveb*
 echo ""
 extall
-extlast
 extweb
-cat /tmp/pvebt.log | column -t
+cat /tmp/pveb.log | column -t
 echo -e "- \e[1;32mGenerating\e[0m web report [\e[1;33m$WEB\e[0m]"