• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Servercheck über automatische Ping abfrage

Code:
#!/bin/sh
## Ob eine Antwort in form eines Paketes vom Pingbefehl erhalten wurde?
# variable für den Befehl "date"
date="$( date )";
# variable für den Befehl "hostname"
hostname="$( hostname )";
# variable für den Speicherort und name der Datei
path="/tmp/test.txt";
# vaiable für IP Adresse:
ip="192.168.0.1";
#
## Der befehl und kürzung auf gewünschte Ausgabe:
VAR="$( ping $ip -c 1 |grep received | awk -F \, '{print $2}' )";
# Abfrage ob die Bedingung zutrifft und Aktion
# (auf das Leerzeichen Achten vor der 1?)
if [ "$VAR" = " 1 received" ]; then
  echo "$hostname Up! last check was on: $date" > $path;
else
  echo "$hostname Down! last check was on: $date" > $path;
fi;
#
exit 0
# EOF

Die Schwierigkeit dabei ist, dass das File immer größer würde, mit dem Lösungsansatz den ich hätte und das hiesse immer größer ohne Ende.

Wenn du dann keine ahnung alle 5 Minuten prüfen würdest mit dem tool, würde es alle 5 Minuten um eine Zeile wachsen bis Ultimo.

so könnte das aussehen dann würde er prüfen wieviele Zeilen die Datei hat und bei der Anzahl 10 welche die Variable amount ist, wird das File einfach gelöscht und es währe wieder leer.:
Code:
#!/bin/sh
## Ob eine Antwort in form eines Paketes vom Pingbefehl erhalten wurde?
# variable für den Befehl "date"
date="$( date )";
# variable für den Befehl "hostname"
hostname="$( hostname )";
# variable für den Speicherort und name der Datei
path="/tmp/test.txt";
# vaiable für IP Adresse:
ip="192.168.0.1";
#
# Anzahl der Zeilen bis zum pathrotate:
amount="10"
#
## Der befehl und kürzung auf gewünschte Ausgabe:
VAR="$( ping $ip -c 1 |grep received | awk -F \, '{print $2}' )";
# Abfrage ob die Bedingung zutrifft und Aktion
# (auf das Leerzeichen Achten vor der 1?)
if [ "$VAR" = " 1 received" ]; then
  echo "$hostname Up! last check was on: $date" >> $path;
else
  echo "$hostname Down! last check was on: $date" >> $path;
fi;
#
# checkt die Größe des File; wenn $amount Zeilen gezählt werden, wird $path gelöscht, um 
# eine Überlaufen der Datei zu verhindern!
rotate="$( cat $path | wc -l )"
if [ "$rotate" = "$amount" ]; then
 rm -rf $path;
fi;
exit 0
# EOF

Code:
#!/bin/bash
# variable mit sh pfad zu check_ping:
ping="sh /home/disk/Desktop/check_ping_thing.sh";
# Zähler zählt von 20 abwärts bis 15 und macht dabei 5 Sekunden nach jedem zählen Pause
# setzt dabei jeweils einmal Ping ab.
COUNTER=20
  until [  $COUNTER -lt 15 ]; do
  echo COUNTER $COUNTER
  $ping
  sleep 5
  let COUNTER-=1;
done

Demnach müsste alle 2x Ausführen vom counter mindestens das File 1x gelöscht werden. Aber mit 5 Sekunden Pause zwischen jedem ping.

Gruß

R
 
hallo,

also die abfrage funktioniet 1A und ist auch genauso wie wir das damals im kurs hatten, auch wenn der lösungsweg evtl. ein wenig anders is. auch das mit der roation des files, damit es nicht zu groß wird, ist eine super idee.

auch das mit dem countdown funktioniert, allerdings frisst das sicher viel an leistung, wie gesagt ist ein kleiner popelliger v-server.
hab das problem aber durch einen cronjob über plesk geregelt ;-)

vielen dank für die wirklich große hilfe!!!

wünsch dir + alle die das lesen guten rutsch ins neue Jahr

lg smoke
 
Oben