Bash-Skript · 3 min read · Jan 20, 2026
Einfaches Bash-Skript zur Überwachung Ihres Webservers aus der Ferne auf verschiedenen Ports
Einfaches Bash-Skript zur Überwachung Ihres Webservers aus der Ferne auf verschiedenen Ports
Ein einfaches Bash-Skript zur Überwachung eines Webservers auf verschiedenen Ports (hier smtp, dns, http & https, aber es kann angepasst werden); ich bin mir sicher, dass es über 100 verfügbare Programme gibt, die dies tun, aber ich wollte etwas mit geringem Speicherverbrauch. Außerdem wollte ich nur einmal benachrichtigt werden, Benachrichtigungen werden per SMS auf meinem Handy empfangen. Mit der Software, die ich vorher verwendet habe, wurde ich jede Minute benachrichtigt, bis ich einen Computer erreichen und das Problem beheben oder die Überwachung stoppen konnte, was ziemlich nervig war.
Softwareinstallation
Sie müssen mail, dig und telnet installiert haben.
Das Skript
HINWEIS: Das Skript wird nicht fortgesetzt, bis Sie:
./whatever_you_called_this_script fixDies geschieht absichtlich, um nur eine BENACHRICHTIGUNG zu erhalten…
#!/bin/bash
# Skript zur Überprüfung wichtiger Ports auf einem entfernten Webserver
# Copyright (c) 2009 blogama.org
# Dieses Skript ist lizenziert unter GNU GPL Version 2.0 oder höher
# ---------------------------------------------------------------------
### Dieses Skript führt eine Überprüfung auf den Ports 25, 53, 80 und 443 durch ###
### Nach 2 fehlgeschlagenen Überprüfungen wird eine E-Mail-Benachrichtigung gesendet ###
######Zu ändern######
WORKDIR="/root"
###HTTP###
HTTPSERVERIP="192.168.1.106"
HTTPSERVERPORT="80"
##########
###HTTPS###
HTTPSSERVERIP="192.168.1.106"
HTTPSSERVERPORT="443"
##########
###MAIL###
SMTPSERVERIP="192.168.1.106"
SMTPSERVERPORT="25"
##########
###DNS###
DNSSERVERIP="192.168.1.106"
DOMAINTOCHECKDNS="example.com"
ANSWERIP="192.168.1.106"
#########
###BENACHRICHTIGUNGEN###
EMAIL="[email protected]"
##########
######Ende zu ändern######
######Keine Änderungen unterhalb vornehmen######
### Binaries ###
MAIL=$(which mail)
TELNET=$(which telnet)
DIG=$(which dig)
###Verzeichnis wechseln###
cd $WORKDIR
###Wiederherstellen, wenn das Problem behoben ist###
if [ $1 ]; then
if [ $1=="fix" ]; then
rm server_problem*.txt
exit 1;
fi
fi
###Überprüfen, ob bereits benachrichtigt wurde###
if [ -f server_problem.txt ]; then
exit 1;
fi
###Test SMTP###
(
echo "quit"
) | $TELNET $SMTPSERVERIP $SMTPSERVERPORT | grep Connected > /dev/null 2>&1
if [ "$?" -ne "1" ]; then #Ok
echo "PORT CONNECTED"
if [ -f server_problem_first_time_smtp.txt ]; then #Datei entfernen, wenn das Problem behoben ist
rm -rf server_problem_first_time_smtp.txt
fi
else #Verbindungsfehler
if [ -f server_problem_first_time_smtp.txt ]; then #Zweites Mal, Benachrichtigung senden
echo "SMTP PORT NOT CONNECTING" >> server_problem.txt
rm -rf server_problem_first_time_smtp.txt
else #Erste Benachrichtigung
> server_problem_first_time_smtp.txt
fi
fi
###Test HTTP###
(
echo "quit"
) | $TELNET $HTTPSERVERIP $HTTPSERVERPORT | grep Connected > /dev/null 2>&1
if [ "$?" -ne "1" ]; then #Ok
echo "PORT CONNECTED"
if [ -f server_problem_first_time_http.txt ]; then #Datei entfernen, wenn das Problem behoben ist
rm -rf server_problem_first_time_http.txt
fi
else #Verbindungsfehler
if [ -f server_problem_first_time_http.txt ]; then #Zweites Mal, Benachrichtigung senden
echo "HTTP PORT NOT CONNECTING" >> server_problem.txt
rm -rf server_problem_first_time_http.txt
else #Erste Benachrichtigung
> server_problem_first_time_http.txt
fi
fi
###Test HTTPS###
(
echo "quit"
) | $TELNET $HTTPSSERVERIP $HTTPSSERVERPORT | grep Connected > /dev/null 2>&1
if [ "$?" -ne "1" ]; then #Ok
echo "PORT CONNECTED"
if [ -f server_problem_first_time_https.txt ]; then #Datei entfernen, wenn das Problem behoben ist
rm -rf server_problem_first_time_https.txt
fi
else #Verbindungsfehler
if [ -f server_problem_first_time_https.txt ]; then #Zweites Mal, Benachrichtigung senden
echo "HTTPS PORT NOT CONNECTING" >> server_problem.txt
rm -rf server_problem_first_time_https.txt
else #Erste Benachrichtigung
> server_problem_first_time_https.txt
fi
fi
###Test DNS###
$DIG $DOMAINTOCHECKDNS @$DNSSERVERIP | grep $ANSWERIP
if [ "$?" -ne "1" ]; then #Ok
echo "PORT CONNECTED"
if [ -f server_problem_first_time_dns.txt ]; then #Datei entfernen, wenn das Problem behoben ist
rm -rf server_problem_first_time_dns.txt
fi
else #Verbindungsfehler
if [ -f server_problem_first_time_dns.txt ]; then #Zweites Mal, Benachrichtigung senden
echo "DNS PORT NOT CONNECTING" >> server_problem.txt
rm -rf server_problem_first_time_dns.txt
else #Erste Benachrichtigung
> server_problem_first_time_dns.txt
fi
fi
###E-Mail-Benachrichtigung nach 2 fehlgeschlagenen Überprüfungen senden###
if [ -f server_problem.txt ]; then
$MAIL -s "Serverproblem" $EMAIL < /root/server_problem.txt
fi
Machen Sie es ausführbar:
chmod +x whatever_you_called_this_scriptFügen Sie es zu Ihrem Crontab hinzu:
crontab -e* * * * * /path/to/whatever_you_called_this_script >/dev/null 2>&1Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.