#!/bin/bash ######################################################################### # Script for extract PVE backup VM status # # Created by Pavol Macko - DoIT # # ver 0.4 # ######################################################################### #---------------------------- VARIABLES --------------------------------# SRV=$(hostname -s) SRC="/var/www/backup/" test -d $SRC || mkdir $SRC WEB="$SRC/index.html" #--------------------------- 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; do cat /tmp/pveb.log | grep -w $t | tail -1 >> /tmp/pvebt.log done sed -i "s/[[:space:]]\+/ /g" /tmp/pvebt.log echo "--- --------- ---------- ---------- ---------- -------- -------- ------ --------" >> /tmp/pvebt.log } #-------------------------- GENERATE-WEB -------------------------------# extweb(){ cat > $WEB <<\EOG PVE-Backups 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 "" >> $WEB echo "" >> $WEB echo "" >> $WEB echo "" >> $WEB echo "" >> $WEB echo "" >> $WEB echo "" >> $WEB echo "" >> $WEB echo "" >> $WEB echo "" >> $WEB echo "" >> $WEB done cat >> $WEB <
PID
HOSTNAME
START-DATE
START-TIME
END-DATE
END-TIME
HDD-SIZE
DUR(s)
BCK-SIZE
$ID
$HST
$SDATE
$STIME
$EDATE
$ETIME
$HSIZE
$DUR
$e
GENERATED: `date +%d/%m/%Y" "%T`
EOX } #------------------------------- CORE ----------------------------------# rm -rf /tmp/pveb* echo "" extall extlast extweb cat /tmp/pvebt.log | column -t echo -e "- \e[1;32mGenerating\e[0m web report [\e[1;33m$WEB\e[0m]"