Website-Suche

Ping-Sweep-Skript zum Scannen und Überwachen des Netzwerks


In diesem Tutorial stellen wir einige Bash-Skripte zur Verfügung, um das Netzwerk mithilfe einer Kombination von Befehlen wie ping zu scannen und zu überwachen. Offensichtlich sind diese Skripte nicht vergleichbar mit einer dedizierten Überwachungssoftware wie Nagios, aber sie könnten für kleine Eigenmarkennetzwerke nützlich sein, bei denen die Implementierung ausgeklügelter Überwachungssysteme zu viel Aufwand machen kann.

In diesem Tutorial lernen Sie:

  • So scannen Sie ein Netzwerksubnetz mit einem Bash-Skript
  • So benachrichtigen Sie per E-Mail, wenn ein Netzwerkhost ausgefallen ist
  • So erstellen Sie ein Netzwerküberwachungsprotokoll in Bash

Netzwerksubnetz scannen

In diesem Beispiel durchsucht das Bash-Skript das Netzwerk nach Hosts, die an die IP-Adresse 10.1.1.1 – 255 angehängt sind. Das Skript gibt die Nachricht Node with IP: IP-address is up aus, wenn der Ping-Befehl erfolgreich war. Fühlen Sie sich frei, das Skript zu ändern, um den Bereich Ihres Hosts zu scannen.

#!/bin/bash

is_alive_ping()
{
  ping -c 1 $1 > /dev/null
  [ $? -eq 0 ] && echo Node with IP: $i is up.
}

for i in 10.1.1.{1..255} 
do
is_alive_ping $i & disown
done

Beispielausgabe:


./bash_ping_scan.sh
Node with IP: 10.1.1.1 is up.
Node with IP: 10.1.1.4 is up.
Node with IP: 10.1.1.9 is up.

Benachrichtigen, wenn das Skript des Servers ausgefallen ist

In diesem nächsten Beispiel für ein Ping-Bash-Skript senden wir eine E-Mail an eine angegebene E-Mail-Adresse, wenn Ping sein Ziel nicht erreichen kann. Der Systemadministrator kann dies regelmäßig im Skript mit Hilfe eines Cron-Schedulers ausführen.

Das Skript verwendet zunächst den Befehl ping, um einen Host oder eine IP-Adresse zu pingen, die als Argument angegeben wird. Falls das Ziel nicht erreichbar ist, wird ein Mail-Befehl verwendet, um den Systemadministrator über dieses Ereignis zu informieren.

#!/bin/bash

for i in $@
do
ping -c 1 $i &> /dev/null

if [ $? -ne 0 ]; then
	echo "`date`: ping failed, $i host is down!" | mail -s "$i host is down!" my@email.address 
fi
done

Beispiel für eine Ausführungssyntax:


./check_hosts.sh google.com yahoo.com 192.168.1.2 mylinuxbox N2100

Erstellen eines Überwachungsprotokolls

Das letzte Beispiel ist eine modifizierte Version des vorherigen Beispiels. Wenn Mail auf dem System nicht konfiguriert ist, erstellt das Skript eine Protokolldatei. Der Kern des Skripts ist in eine endlose while-Schleife eingebunden, die so eingestellt ist, dass die Ping-Prüfung stündlich ( 3600 Sekunden ) ausgeführt wird.

Ändern Sie das Skript nach Ihren Bedürfnissen. Entfernen Sie die endlose while-Schleife, wenn Sie beabsichtigen, dieses Skript mit dem Cron-Scheduler zu verwenden.

#!/bin/bash 
 
LOG=/tmp/mylog.log 
SECONDS=3600 

EMAIL=my@email.address 
 
for i in $@; do 
	echo "$i-UP!" > $LOG.$i 

done 
 
while true; do 
	for i in $@; do 

ping -c 1 $i > /dev/null 
if [ $? -ne 0 ]; then 
	STATUS=$(cat $LOG.$i) 
 		if [ $STATUS != "$i-DOWN!" ]; then 
 			echo "`date`: ping failed, $i host is down!" | 
			mail -s "$i host is down!" $EMAIL 

 		fi 
	echo "$i-DOWN!" > $LOG.$i 

else 
	STATUS=$(cat $LOG.$i)
 		if [ $STATUS != "$i-UP!" ]; then 
 			echo "`date`: ping OK, $i host is up!" | 
			mail -s "$i host is up!" $EMAIL

 		fi 
	echo "$i-UP!" > $LOG.$i 
fi 
done 

sleep $SECONDS 
done

Beispiel für eine Ausführungssyntax:


./check-server-status.sh google.com yahoo.com 192.168.1.2 mylinuxbox N2100

Abschließende Gedanken

In diesem Tutorial haben wir gesehen, wie Sie Bash-Skripte verwenden, um den Status eines Netzwerks auf einem Linux-System zu überwachen. Bash ist zwar nicht so robust wie ein dediziertes Netzwerkverwaltungsprogramm, bietet uns aber dennoch viele Tools für die grundlegende Überwachung. Auf diese Weise können wir ein Subnetz per Ping durchziehen, Knoten in einem Netzwerk überwachen und benachrichtigen, wenn ein Host nicht mehr erreichbar ist.

Verwandte Artikel: