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 fix

Dies 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_script

Fügen Sie es zu Ihrem Crontab hinzu:

crontab -e
* * * * * /path/to/whatever_you_called_this_script >/dev/null 2>&1
Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.