1
0

pve_backup.sh 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #!/bin/bash
  2. #########################################################################
  3. # Script for extract PVE backup VM status #
  4. # Created by Pavol Macko - DoIT #
  5. # ver 0.4 #
  6. #########################################################################
  7. #---------------------------- VARIABLES --------------------------------#
  8. SRV=$(hostname -s)
  9. SRC="/var/www/backup/"
  10. test -d $SRC || mkdir $SRC
  11. WEB="$SRC/index.html"
  12. #--------------------------- EXTRACT-ALL -------------------------------#
  13. extall(){
  14. 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 "
  15. echo "--- --------- ---------- ---------- ---------- -------- -------- ------ --------" > /tmp/pveb.log
  16. echo "PID HOSTNAME START-DATE START-TIME END-DATE END-TIME HDD-SIZE DUR(s) BCK-SIZE" >> /tmp/pveb.log
  17. echo "--- --------- ---------- ---------- ---------- -------- -------- ------ --------" >> /tmp/pveb.log
  18. LST=$(egrep -lRi "backup" /var/log/pve/tasks/* | grep pam)
  19. for b in $LST;
  20. do
  21. cat $b | grep "Starting Backup" | awk '{print $6}' > /tmp/pbi
  22. cat $b | grep "Backup started" | awk '{print $5,$6}' > /tmp/pbs
  23. cat $b | grep "VM Name" | awk '{print $4}' > /tmp/pbn
  24. cat $b | grep "Backup finished" | awk '{print $5,$6}' > /tmp/pbe
  25. cat $b | grep "transferred" | awk '{print $3$4,$6}' | sed 's/\.00//g' | sed 's/i//g' > /tmp/pbt
  26. SIZ=$(cat $b | grep "archive file" | awk '{print $5}')
  27. if [ ! -z "$SIZ" ];
  28. then
  29. cat $b | grep "archive file" | awk '{print $5}' > /tmp/pbz
  30. else
  31. cat $b | grep "backup is sparse" | awk '{print $5$6}' > /tmp/pbz
  32. fi
  33. paste /tmp/pbi /tmp/pbn /tmp/pbs /tmp/pbe /tmp/pbt /tmp/pbz >> /tmp/pveb
  34. done
  35. cat /tmp/pveb | sort -n >> /tmp/pveb.log
  36. echo "--- --------- ---------- ---------- ---------- -------- -------- ------ --------" >> /tmp/pveb.log
  37. cat /tmp/pveb.log | column -t
  38. }
  39. #--------------------------- EXTRACT-LAST -------------------------------#
  40. extlast(){
  41. 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 "
  42. echo "--- --------- ---------- ---------- ---------- -------- -------- ------ --------" > /tmp/pvebt.log
  43. echo "PID HOSTNAME START-DATE START-TIME END-DATE END-TIME HDD-SIZE DUR(s) BCK-SIZE" >> /tmp/pvebt.log
  44. echo "--- --------- ---------- ---------- ---------- -------- -------- ------ --------" >> /tmp/pvebt.log
  45. PID=$(cat /tmp/pveb.log | awk '{print $1}' | egrep -v "\---|PID" | sort | uniq)
  46. for t in $PID;
  47. do
  48. cat /tmp/pveb.log | grep -w $t | tail -1 >> /tmp/pvebt.log
  49. done
  50. sed -i "s/[[:space:]]\+/ /g" /tmp/pvebt.log
  51. echo "--- --------- ---------- ---------- ---------- -------- -------- ------ --------" >> /tmp/pvebt.log
  52. }
  53. #-------------------------- GENERATE-WEB -------------------------------#
  54. extweb(){
  55. cat > $WEB <<\EOG
  56. <html>
  57. <head>
  58. <title>PVE-Backups</title>
  59. </head>
  60. <BODY>
  61. <TABLE WIDTH="100%" BORDER=1>
  62. <TBODY>
  63. <TR BGCOLOR="#C0C0C0" VALIGN=center>
  64. <TD WIDTH="10%"><DIV ALIGN=center><B>PID</B></DIV></TD>
  65. <TD WIDTH="20%"><DIV ALIGN=center><B>HOSTNAME</B></DIV></TD>
  66. <TD WIDTH="10%"><DIV ALIGN=center><B>START-DATE</B></DIV></TD>
  67. <TD WIDTH="10%"><DIV ALIGN=center><B>START-TIME</B></DIV></TD>
  68. <TD WIDTH="10%"><DIV ALIGN=center><B>END-DATE</B></DIV></TD>
  69. <TD WIDTH="10%"><DIV ALIGN=center><B>END-TIME</B></DIV></TD>
  70. <TD WIDTH="10%"><DIV ALIGN=center><B>HDD-SIZE</B></DIV></TD>
  71. <TD WIDTH="10%"><DIV ALIGN=center><B>DUR(s)</B></DIV></TD>
  72. <TD WIDTH="10%"><DIV ALIGN=center><B>BCK-SIZE</B></DIV></TD>
  73. </TR>
  74. EOG
  75. IDS=$(cat /tmp/pvebt.log | grep "^[0-9]" | awk '{print $9}')
  76. for e in $IDS;
  77. do
  78. ID=$(cat /tmp/pvebt.log | grep -w "$e" | awk '{print $1}')
  79. HST=$(cat /tmp/pvebt.log | grep -w "$e" | awk '{print $2}')
  80. SDATE=$(cat /tmp/pvebt.log | grep -w "$e" | awk '{print $3}')
  81. STIME=$(cat /tmp/pvebt.log | grep -w "$e" | awk '{print $4}')
  82. EDATE=$(cat /tmp/pvebt.log | grep -w "$e" | awk '{print $5}')
  83. ETIME=$(cat /tmp/pvebt.log | grep -w "$e" | awk '{print $6}')
  84. HSIZE=$(cat /tmp/pvebt.log | grep -w "$e" | awk '{print $7}')
  85. DUR=$(cat /tmp/pvebt.log | grep -w "$e" | awk '{print $8}')
  86. BSIZE=$(cat /tmp/pvebt.log | grep -w "$e" | awk '{print $9}')
  87. echo "<TR VALIGN=center>" >> $WEB
  88. echo "<TD WIDTH=\"10%\"><DIV ALIGN=center>$ID</DIV></TD>" >> $WEB
  89. echo "<TD WIDTH=\"20%\"><DIV ALIGN=center>$HST</DIV></TD>" >> $WEB
  90. echo "<TD WIDTH=\"10%\"><DIV ALIGN=center>$SDATE</DIV></TD>" >> $WEB
  91. echo "<TD WIDTH=\"10%\"><DIV ALIGN=center>$STIME</DIV></TD>" >> $WEB
  92. echo "<TD WIDTH=\"10%\"><DIV ALIGN=center>$EDATE</DIV></TD>" >> $WEB
  93. echo "<TD WIDTH=\"10%\"><DIV ALIGN=center>$ETIME</DIV></TD>" >> $WEB
  94. echo "<TD WIDTH=\"10%\"><DIV ALIGN=center>$HSIZE</DIV></TD>" >> $WEB
  95. echo "<TD WIDTH=\"10%\"><DIV ALIGN=center>$DUR</DIV></TD>" >> $WEB
  96. echo "<TD WIDTH=\"10%\"><DIV ALIGN=center>$e</DIV></TD>" >> $WEB
  97. echo "</TR>" >> $WEB
  98. done
  99. cat >> $WEB <<EOX
  100. <TR BGCOLOR="#C0C0C0" VALIGN=center>
  101. <TD COlSPAN="9" WIDTH="100%"><DIV ALIGN=center><B>GENERATED: <I>`date +%d/%m/%Y" "%T`</I></B></DIV></TD>
  102. </TR>
  103. </TBODY>
  104. </TABLE>
  105. </BODY>
  106. EOX
  107. }
  108. #------------------------------- CORE ----------------------------------#
  109. rm -rf /tmp/pveb*
  110. echo ""
  111. extall
  112. extlast
  113. extweb
  114. cat /tmp/pvebt.log | column -t
  115. echo -e "- \e[1;32mGenerating\e[0m web report [\e[1;33m$WEB\e[0m]"