This commit is contained in:
2025-11-10 13:11:54 +00:00
commit 0bf68b5a0f
3 changed files with 79 additions and 0 deletions

72
Mon.sh Executable file
View File

@@ -0,0 +1,72 @@
#!/usr/bin/env bash
# Webhost Availability Monitor - Single File - Loop
# user only. keine root.
set -o errexit
set -o nounset
set -o pipefail
INTERVAL=60
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
LOG_DIR="$ROOT_DIR/logs"
HOSTS_FILE="$ROOT_DIR/hosts.txt"
SEP=';'
timestamp_iso() {
date -Iseconds
}
ensure_dirs() {
mkdir -p "$LOG_DIR"
}
current_logfile() {
printf "%s/%s.csv" "$LOG_DIR" "$(date +%F)"
}
write_header_if_needed() {
local file="$1"
if [ ! -f "$file" ] || [ ! -s "$file" ]; then
printf "timestamp${SEP}label${SEP}http_code\n" >>"$file"
fi
}
stop_requested=0
_on_exit() {
stop_requested=1
printf "\nstop received. exit after current batch\n" >&2
}
trap _on_exit INT TERM
ensure_dirs
printf "loop start. 60s. logs dir: %s\n" "$LOG_DIR"
while [ "$stop_requested" -eq 0 ]; do
logfile="$(current_logfile)"
write_header_if_needed "$logfile"
while IFS= read -r line; do
[ -z "$line" ] && continue
case "$line" in \#*) continue ;; esac
IFS='|' read -r label url expected <<<"$line"
ts="$(timestamp_iso)"
set +o errexit
code="$(curl -sS -o /dev/null -w "%{http_code}" --max-time 10 -L "$url" 2>/dev/null)" || code="000"
set -o errexit
printf "%s%s%s%s%s\n" "$ts" "$SEP" "$label" "$SEP" "$code" >>"$logfile"
done <"$HOSTS_FILE"
# interruptable sleep
waited=0
while [ "$waited" -lt "$INTERVAL" ] && [ "$stop_requested" -eq 0 ]; do
sleep 1
waited=$((waited+1))
done
done
printf "exit\n"

2
hosts.txt Normal file
View File

@@ -0,0 +1,2 @@
google|https://www.google.com|200
Authentik-Tim|https://auth.st-server.org|200

5
logs/2025-11-10.csv Normal file
View File

@@ -0,0 +1,5 @@
timestamp;label;http_code
2025-11-10T12:23:06+00:00;google;200
2025-11-10T12:23:07+00:00;Authentik-Tim;503
2025-11-10T12:24:08+00:00;google;200
2025-11-10T12:24:08+00:00;Authentik-Tim;503
1 timestamp label http_code
2 2025-11-10T12:23:06+00:00 google 200
3 2025-11-10T12:23:07+00:00 Authentik-Tim 503
4 2025-11-10T12:24:08+00:00 google 200
5 2025-11-10T12:24:08+00:00 Authentik-Tim 503