Welcome Sidechecks.sh
Signed-off-by: hax <hax@lainlounge.xyz>
This commit is contained in:
parent
d5072a0b76
commit
248acf3c08
1 changed files with 133 additions and 0 deletions
133
sitechecks.sh
Normal file
133
sitechecks.sh
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Dateien
|
||||
INPUT_FILE="sites.json"
|
||||
LOG_FILE="sites.log"
|
||||
|
||||
# Curl-Optionen
|
||||
CURL_OPTS=(
|
||||
--silent
|
||||
--max-time 10
|
||||
--location
|
||||
--max-redirs 10
|
||||
--fail
|
||||
--output /dev/null
|
||||
)
|
||||
|
||||
# Telegram-Bot-Configuration
|
||||
TELEGRAM_BOT_TOKEN="${TELEGRAM_BOT_TOKEN:-<Ihr-Bot-Token>}"
|
||||
TELEGRAM_CHAT_ID="${TELEGRAM_CHAT_ID:-<Ihre-Chat-ID>}"
|
||||
|
||||
# Function: Send Telegram-Messages
|
||||
send_telegram_message() {
|
||||
local chat_id="$1"
|
||||
local message="$2"
|
||||
curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
|
||||
-d chat_id="${chat_id}" \
|
||||
-d text="$message" \
|
||||
> /dev/null
|
||||
}
|
||||
|
||||
# Function: Describe HTTP-Statuscode
|
||||
http_status_description() {
|
||||
local status="$1"
|
||||
case "$status" in
|
||||
200) echo "OK" ;;
|
||||
301) echo "Moved Permanently" ;;
|
||||
302) echo "Found" ;;
|
||||
400) echo "Bad Request" ;;
|
||||
401) echo "Unauthorized" ;;
|
||||
403) echo "Forbidden" ;;
|
||||
404) echo "Not Found" ;;
|
||||
408) echo "Request Timeout" ;;
|
||||
429) echo "Too Many Requests" ;;
|
||||
500) echo "Internal Server Error" ;;
|
||||
502) echo "Bad Gateway" ;;
|
||||
503) echo "Service Unavailable" ;;
|
||||
504) echo "Gateway Timeout" ;;
|
||||
*) echo "Unknown Status" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Function: Check Site Status
|
||||
check_site() {
|
||||
local site="$1"
|
||||
curl "${CURL_OPTS[@]}" --write-out "%{http_code}" "$site" 2>/dev/null
|
||||
}
|
||||
|
||||
# Function: Telegram-Command `/check URL` execution
|
||||
process_telegram_updates() {
|
||||
local update_url="https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/getUpdates"
|
||||
local last_update_id=0
|
||||
|
||||
while true; do
|
||||
# Check for Updates
|
||||
response=$(curl -s "${update_url}?offset=${last_update_id}")
|
||||
messages=$(echo "$response" | jq -c '.result[]')
|
||||
|
||||
for message in $messages; do
|
||||
# Extract Message Details
|
||||
update_id=$(echo "$message" | jq -r '.update_id')
|
||||
chat_id=$(echo "$message" | jq -r '.message.chat.id')
|
||||
text=$(echo "$message" | jq -r '.message.text')
|
||||
|
||||
# Command `/check URL` run
|
||||
if [[ "$text" == /check* ]]; then
|
||||
url=$(echo "$text" | awk '{print $2}')
|
||||
if [[ -z "$url" ]]; then
|
||||
send_telegram_message "$chat_id" "❗ Fehler: Please provide a valid URL after /check."
|
||||
else
|
||||
status=$(check_site "$url")
|
||||
description=$(http_status_description "$status")
|
||||
|
||||
send_telegram_message "$chat_id" "🌐 URL: $url
|
||||
HTTP-Status: $status ($description)"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Update-ID Increasing, to avoid double messages
|
||||
last_update_id=$((update_id + 1))
|
||||
done
|
||||
|
||||
# Check Intervall
|
||||
sleep 5
|
||||
done
|
||||
}
|
||||
|
||||
# Function: Automatic Monitoring
|
||||
monitor_sites() {
|
||||
local urls=$(jq -r '.urls[]' "$INPUT_FILE")
|
||||
|
||||
if [[ -z "$urls" ]]; then
|
||||
echo "Error: No URL set."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for site in $urls; do
|
||||
status=$(check_site "$site")
|
||||
description=$(http_status_description "$status")
|
||||
|
||||
# Show Only The Error
|
||||
if [[ "$status" != "200" ]]; then
|
||||
send_telegram_message "$TELEGRAM_CHAT_ID" "❗ Website-Monitoring Error:
|
||||
🌐 URL: $site
|
||||
HTTP-Status: $status ($description)"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Hauptteil
|
||||
case "$1" in
|
||||
listen)
|
||||
echo "Start Telegram-Bot-Listeners..."
|
||||
process_telegram_updates
|
||||
;;
|
||||
monitor)
|
||||
echo "Start Auto Monitoring..."
|
||||
monitor_sites
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {listen|monitor}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Loading…
Add table
Reference in a new issue