From 763e3c7bd3b70f7f59a9a23b259f714ff4d3d811 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Sun, 27 Jun 2021 09:10:11 +0200 Subject: status quo --- print-status-html | 184 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100755 print-status-html (limited to 'print-status-html') diff --git a/print-status-html b/print-status-html new file mode 100755 index 0000000..d4c30c6 --- /dev/null +++ b/print-status-html @@ -0,0 +1,184 @@ +#!/bin/bash + +watch_dirs=('/data/raid/harti') + +{ + cat <Status Of Backup Server +

Partitions

+EOF + + for dir in "${watch_dirs[@]}"; do + { + du -sxh "${dir}" + df -h "${dir}" \ + | sed '1d' + } \ + | tr '\n' ' ' + printf '\n' + done \ + | awk '{ + print $2 ": " $1 "B (partition: " $5 "B of " $4 "B used, " $6 "B free)
" + }' + + cat <Crypt Devices +EOF + + find /dev/mapper -mindepth 1 -maxdepth 1 \( -name 'leg*' -o -name 'foot*' \) -printf '%f\n' \ + | sort -u \ + | xargs -rn1 cryptsetup status \ + | sed ' + s/^\s\+// + s/\s\+$// + \,^/dev/mapper/, !d + / is active and is in use\.$/ { + s,.*,\0, + b + } + s,.*,\0, + ' \ + | sed ' + s/$/
/ + ' + + cat <Software RAIDs +EOF + + { + sed -n ' + /^Personalities/d + /^\S/ { + N + s/^\(\S\+\)\s*:.*\n\s*\([0-9]\)/\1: \2/ + T + p + } + s/^\s\+\(\[[^][]\+]\)\s\+\(\S\+\)\s\+=\s\+\(\S\+\)\s\+\S\+\s\+\(finish=\S\+\)\s.*$/\2 \3 \1 \4/ + T + p + ' /proc/mdstat \ + | sort -u \ + | while read -r line; do + if [ -z "${line%%* finish=*min*}" ]; then + duration="${line##* finish=}" + duration="${duration%%min*}" + time=$( + date +'%F %T' -d@$(( + $(date +%s) + $(echo "60 * ${duration}" | bc -l | sed 's/\..*$//') + )) + ) + printf '%s (%s)\n' "${line}" "${time}" + else + printf '%s\n' "${line}" + fi + done \ + | sed ' + s,.*\[U\+\]$,\0, + t + s,^\(re\(shape\|covery\|sync\) \S\+\) \[\(\S*\)>\(\.*\)\] \(\S\+\s\+\S\+\s\+\S\+\)$,\1 [\3\>\4] \5, + t + s,.*,\0, + ' + + find /sys/block/ -mindepth 1 -maxdepth 1 -name 'md*' -printf '%f: ' -exec cat {}/md/mismatch_cnt \; \ + | sort -u \ + | sed ' + s/$/ mismatches/ + /^\S\+: 0 mismatches$/ { + s,.*,\0, + b + } + s,.*,\0, + ' + } \ + | sed ' + s/$/
/ + ' + + cat <Hardware RAIDs +EOF + + ssacli ctrl slot=1 ld all show \ + | sed ' + s/^\s\+// + s/\s\+$// + /^$/d + /^logicaldrive/ !b + / OK)$/ { + s,.*,\0, + b + } + s,.*,\0, + ' \ + | sed ' + s/$/
/ + ' + + cat <Backups + + +EOF + last-backups \ + | sed ' + /VERALTET\|LEER/ ! s/^/ok/ + ' \ + | awk '{ + print "" + }' \ + | sed ' + s/^\(,,g + b + } + s,,,g + ' + cat < +EOF + + if [ -f /srv/http/tmp/index.html ]; then + + cat < + +EOF + + OUTPUT=/srv/http/tmp/index.html backup-progress \ + | tr -d '()' \ + | awk '{print ""}' + + cat < +EOF + + fi + + cat <Status +EOF + printf 'Bericht erstellt am %s um %s Uhr (%s).
\n' \ + "$( + date '+%F' + )" \ + "$( + date '+%H:%M:%S' + )" \ + "$( + date '+%Z' + )" + + cat < +EOF + +} | \ + if mountpoint -q /srv/http/tmp; then + sponge /srv/http/tmp/index.html + else + cat + fi -- cgit v1.2.3-54-g00ecf
StatusNameLetztes erfolgreiches Backup
" $1 "" $2 "" $3 "
[^<>]*\)_laeuft/\1 (l\äuft)/ + /^
ok\( [^<>]\+\)\?\([^<>]\+\)\1\([^<>]\+\)\1
NameFortschrittbisherige Größe
" $1 "" $2 " " $3 "" $4 " " $5 "