From b181682b20d11c1b9da83f2f19d2b3742bda86f1 Mon Sep 17 00:00:00 2001 From: "LORENZO\\pacio" Date: Mon, 14 Jul 2025 17:56:31 +0200 Subject: [PATCH] . --- Dockerfile | 11 +++++++++++ check.sh | 34 ++++++++++++++++++++++++++++++++++ docker-compose.yml | 9 +++++++++ 3 files changed, 54 insertions(+) create mode 100644 Dockerfile create mode 100644 check.sh create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..90fe002 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM alpine:latest + +RUN apk add --no-cache iputils coreutils tzdata + +ENV TZ=Europe/Rome + +WORKDIR /app +COPY check.sh . +RUN chmod +x check.sh + +CMD ["./check.sh"] diff --git a/check.sh b/check.sh new file mode 100644 index 0000000..150b911 --- /dev/null +++ b/check.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +HOST="${HOST_TO_CHECK:-example.com}" +INTERVAL="${INTERVAL_SECONDS:-300}" +LOGFILE="/logs/${HOST}.log" + +mkdir -p /logs + +echo "Monitoring $HOST every $INTERVAL seconds..." + +while true; do + OUTPUT=$(ping -c 1 -W 2 "$HOST" 2>&1) + EXIT_CODE=$? + + if [ $EXIT_CODE -ne 0 ]; then + TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') + + if echo "$OUTPUT" | grep -q "bad address"; then + REASON="DNS resolution failed" + elif echo "$OUTPUT" | grep -q "Network is unreachable"; then + REASON="No route to network" + elif echo "$OUTPUT" | grep -q "ping: permission denied"; then + REASON="ICMP not permitted (try running as root or with CAP_NET_RAW)" + elif echo "$OUTPUT" | grep -q "100% packet loss"; then + REASON="Timed out (no response)" + else + REASON="Unknown error: $OUTPUT" + fi + + echo "[$TIMESTAMP] Host unreachable: $HOST — Reason: $REASON" | tee -a "$LOGFILE" + fi + + sleep "$INTERVAL" +done diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..be50d6c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,9 @@ +services: + host-checker: + build: . + environment: + - HOST_TO_CHECK=psql01.poloinformatico.it + - INTERVAL_SECONDS=120 + volumes: + - ./logs:/logs + restart: always