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
doneBeispielausgabe:
./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
doneBeispiel 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
doneBeispiel 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.
