Shell Skript: Online Ping Check
Das nachfolgende Shell Skript kann verwendet werden um zyklisch zu überprüfen ob ein Server oder ein anderer Netzwerkteilnehmer erreichbar ist. Die IP-Adresse, den Rechnernamen oder den Domainnamen des zu prüfenden Systems kann man entweder als Argument beim Aufruf des Skripts angeben oder direkt im Shell Skript durch die Variable HOST festlegen. Damit erst nach einer bestimmten Anzahl von fehlgeschlagenen Testdurchläufen ein Fehler protokolliert und gegebenenfalls auch per E-Mail gemeldet wird, kann man eine Schwelle über die Variable MAXERROR definieren. Sollte das System beim ersten Durchlauf nicht erreichbar sein, wird das Skript den Vorgang entsprechend dem Wert von MAXERROR nach jeweils 30 Sekunden wiederholen. Die Logdatei wird über LOGFILE festgelegt. Falls Sie bei einer Nichtverfügbarkeit des Servers per E-Mail benachrichtigt werden wollen, geben Sie Ihre E-Mail Adresse bei MAILNOTIFY an.
###########################################################################
## ##
## Online Ping Check ##
## ##
## Creation: 03.08.2011 ##
## Last Update: 29.08.2016 ##
## ##
## Copyright (c) 2011-2016 by Georg Kainzbauer <http://www.gtkdb.de> ##
## ##
## This program is free software; you can redistribute it and/or modify ##
## it under the terms of the GNU General Public License as published by ##
## the Free Software Foundation; either version 2 of the License, or ##
## (at your option) any later version. ##
## ##
###########################################################################
#!/bin/bash
# IP address or hostname ("$1" if informations are set by the command call)
HOST=$1
# Start value for error counter
ERROR=0
# End value for error counter
MAXERROR=1
# Log file
LOGFILE=/var/log/online_check.log
# Who will be informed in case if anything goes wrong (if you do not want to be informed via mail, set this option to "")
MAILNOTIFY=""
###################################################################
# NORMALLY THERE IS NO NEED TO CHANGE ANYTHING BELOW THIS COMMENT #
###################################################################
# Check if host is reachable
function check()
{
ping -c 1 $HOST >/dev/null 2>&1
status $?
}
# Check delayed (30 seconds) if host is reachable
function delayedcheck()
{
sleep 30
check
}
# Check status of ping check
function status()
{
# Host not reachable
if [ $? -gt 0 ] ; then
# Increment error counter and report error if maxerror value is reached
if [ $((++ERROR)) -ge ${MAXERROR} ] ; then
error "Host ($HOST) not reachable!"
# Run delayed ping check if maxerror value is not reached
else
delayedcheck
fi
# Host is reachable
else
log "Host ($HOST) is reachable!"
fi
}
# Print log message to log file
function log()
{
echo `date +%d.%m.%Y%t%H:%M:%S` " LOG:" $1 >>${LOGFILE}
}
# Report error message
function error()
{
# Print error message to log file
echo `date +%d.%m.%Y%t%H:%M:%S` " ERROR:" $1 >>${LOGFILE}
# Report error message by mail
if [ -n "$MAILNOTIFY" ] ; then
echo `date +%d.%m.%Y%t%H:%M:%S` " ERROR:" $1 | mail -s "ERROR while running online check" $MAILNOTIFY
fi
# Exit script with error
exit 1
}
# Check if IP address or hostname is available
if [ ! -n "$HOST" ] ; then
error "No IP address or hostname available!"
fi
# Run ping check
check
# Exit script successfully
exit 0
## ##
## Online Ping Check ##
## ##
## Creation: 03.08.2011 ##
## Last Update: 29.08.2016 ##
## ##
## Copyright (c) 2011-2016 by Georg Kainzbauer <http://www.gtkdb.de> ##
## ##
## This program is free software; you can redistribute it and/or modify ##
## it under the terms of the GNU General Public License as published by ##
## the Free Software Foundation; either version 2 of the License, or ##
## (at your option) any later version. ##
## ##
###########################################################################
#!/bin/bash
# IP address or hostname ("$1" if informations are set by the command call)
HOST=$1
# Start value for error counter
ERROR=0
# End value for error counter
MAXERROR=1
# Log file
LOGFILE=/var/log/online_check.log
# Who will be informed in case if anything goes wrong (if you do not want to be informed via mail, set this option to "")
MAILNOTIFY=""
###################################################################
# NORMALLY THERE IS NO NEED TO CHANGE ANYTHING BELOW THIS COMMENT #
###################################################################
# Check if host is reachable
function check()
{
ping -c 1 $HOST >/dev/null 2>&1
status $?
}
# Check delayed (30 seconds) if host is reachable
function delayedcheck()
{
sleep 30
check
}
# Check status of ping check
function status()
{
# Host not reachable
if [ $? -gt 0 ] ; then
# Increment error counter and report error if maxerror value is reached
if [ $((++ERROR)) -ge ${MAXERROR} ] ; then
error "Host ($HOST) not reachable!"
# Run delayed ping check if maxerror value is not reached
else
delayedcheck
fi
# Host is reachable
else
log "Host ($HOST) is reachable!"
fi
}
# Print log message to log file
function log()
{
echo `date +%d.%m.%Y%t%H:%M:%S` " LOG:" $1 >>${LOGFILE}
}
# Report error message
function error()
{
# Print error message to log file
echo `date +%d.%m.%Y%t%H:%M:%S` " ERROR:" $1 >>${LOGFILE}
# Report error message by mail
if [ -n "$MAILNOTIFY" ] ; then
echo `date +%d.%m.%Y%t%H:%M:%S` " ERROR:" $1 | mail -s "ERROR while running online check" $MAILNOTIFY
fi
# Exit script with error
exit 1
}
# Check if IP address or hostname is available
if [ ! -n "$HOST" ] ; then
error "No IP address or hostname available!"
fi
# Run ping check
check
# Exit script successfully
exit 0
Damit das Shell Skript zyklisch ausgeführt wird sollten Sie hierfür einen Cronjob erstellen.
Dieser Eintrag wurde am 08.06.2013 erstellt und zuletzt am 29.08.2016 bearbeitet.
Direkter Link zu dieser Seite: http://www.gtkdb.de/index_33_2232.html
[ Zur Startseite ] [ Zur Kategorie ]
© 2004-2021 by Georg Kainzbauer