Good to Know Database

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

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 ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer