Quantcast
Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Support Netzwerkgeräte anpingen

rolu2

Moderator
Teammitglied
Registriert
16. November 2009
Beiträge
9.092
Lösungen
4
Reaktionspunkte
4.662
Punkte
393
Zustand ist das ich Sonoff-Geräte in meiner Homematic benutze. Diese sind im Wlan-Netz eingebunden.Diese könnem mal nicht erreichbar sein.

Daher wollte ich sie über meinen Raspberry Pi3 anpingen, um es zu prüfen, ob sie erreichbar sind und wenn nicht über UPD neustarten

Im Netzt habe ich ein script gefunden, wie ich es mir vorstelle.

Code:
#!/bin/bash
# check and log if a host is reachable by ping

#CONFIGURATION

#IP of host
WATCH_IP="192.168.0.99"
#path to logfile
LOGFILE="/var/log/watchip.log"
#duration between pings
PAUSE=3
#how many failed pings before log
TESTS=2

#SCRIPT

#initialize
MISSED=0
touch $LOGFILE

while true; do
  if ! ping -c 1 -w 1 $WATCH_IP > /dev/null; then
    ((MISSED++))
  else
    if [ $MISSED -ge $TESTS ]; then
      echo `date` '-' $WATCH_IP "is up again." >> $LOGFILE;
    fi
    MISSED=0
  fi;
  if [ $MISSED -eq $TESTS ]; then
    echo `date` "-" $WATCH_IP "is down." >> $LOGFILE;
  fi
  sleep $PAUSE;
done

Code:
Beschreibung

Im CONFIGURATION-Abschnitt werden vier Variablen definiert, die das Verhalten des Skripts steuern. $WATCH_IP enthält die IP-Adresse des zu überwachenden Hosts, $LOGFILE den Pfad zur Logdatei, $PAUSE die Wartezeit (in Sekunden) zwischen jedem Pingversuch und $TESTS die Anzahl fehlgeschlagener Pings nach der eine Meldung ins Log geschrieben wird.

Das Skript schickt pro Durchlauf immer nur einen Ping (-c 1) auf die Reise und wartet eine Sekunde (-w 1) auf die zugehörige Antwort. Bleibt diese aus, erhöht sich $MISSED um eins, war er hingegen erfolgreich wird $MISSED wieder auf 0 gesetzt. Wenn die Schwelle $TESTS erreicht wird, fügt das Skript eine Zeile mit Zeitstempel und Host-down-Info an die Logdatei an. Ist der Rechner dann wieder per Ping erreichbar, wird in die Logdatei eine ähnliche Host-up-Meldung geschrieben.

Leider ist da folgenen Fehlermeldung, wenn die IP nicht erreichbar ist

Code:
+ WATCH_IP=192.168.178.11
+ LOGFILE=/var/log/watchip.log
+ PAUSE=3
+ TESTS=2
+ MISSED=0
+ touch /var/log/watchip.log
+ true
+ ping -c 1 -w 1 192.168.178.11
+ MISSED++
./test.sh: 23: ./test.sh: MISSED++: not found
+ [ 0 -eq 2 ]
+ sleep 3
+ true
+ ping -c 1 -w 1 192.168.178.11
+ MISSED++
./test.sh: 23: ./test.sh: MISSED++: not found
+ [ 0 -eq 2 ]
+ sleep 3
+ true
+ ping -c 1 -w 1 192.168.178.11
+ MISSED++

So wie es aussieht, kann der
if ! ping -c 1 -w 1 $WATCH_IP > /dev/null; then
((MISSED++))
nicht verarbeitet werden

Hat da jemand eine Idee zu oder eine andere Lösung
 
Komischerweise habe ich das selbe Problem. In meinem Smarthome (Domoticz) ist das Gerät sichtbar und funktioniert aber auf das Web-IF komme ich manchmal nicht.

MfG
 
Das Problem habe ich so gelöst

Vorher
Code:
while true; do
  if ! ping -c 1 -w 1 $WATCH_IP > /dev/null; then
    ((MISSED++))

Jetzt
Code:
while true; do
  if ! ping -c 1 -w 1 $WATCH_IP > /dev/null; then echo $MISSED
    ((MISSED++))


Script sieht jetzt so aus
Code:
#!/bin/bash
# check and log if a host is reachable by ping

#CONFIGURATION

#IP of host
GERAET=Dreiersteckdose
WATCH_IP="192.168.178.11"
#path to logfile
LOGFILE="/var/log/Sonoff/Dreiersteckdose.log"
#duration between pings
PAUSE=60
#how many failed pings before log
TESTS=10

#SCRIPT

#initialize
MISSED=0
#touch $LOGFILE

#-lt = lesser than      = kleiner als
#-eq = equal            = Gleichheit
#-ne = not equal        = Ungleichheit
#-le = lesser or equal  = kleiner oder gleich
#-ge = greater or equal = größer oder gleich
#-gt = greater than     = größer als

while true; do
  if ! ping -c 1 -w 1 $WATCH_IP > /dev/null; then echo $MISSED
    ((MISSED++))
  else
    if [ $MISSED -ge $TESTS ]; then
      echo `date` "-" $GERAET "ist wieder online." >> $LOGFILE;
    fi
    MISSED=0
  fi;
  if [ $MISSED -eq $TESTS ]; then
       echo `date` "-" $GERAET "wurde neu gestartet." >> $LOGFILE;
       echo "reboot" | socat - udp-sendto:192.168.178.11:6676   
  fi
  sleep $PAUSE;
done
 
Zuletzt bearbeitet:
Zurück
Oben