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