[gelöst] Wie prüfen, ob Webseite erreichbar ?

Begonnen von olvis, 15 Oktober 2018, 16:00:11

Vorheriges Thema - Nächstes Thema

olvis

Hallo zusammen,
ich möchte prüfen, ob mein AccessPoint (AP) verfügbar ist.
Ein lan-ping reicht hier nicht aus, da der Ping zwar "present" wieder gibt, aber der AccessPoint trotzdem down ist.
Jetzt möchte ich also versuchen, das WebInterface des AP anzusprechen. Denn wenn ich diese Website erreiche (Beispiel: 192.168.178.43/index.asp), ist der AP da und nutzbar. Wenn die Webseite nicht erreichbar ist, ist der AP unten.

Ich probiere es gerade mit HTTPMOD, komme aber nicht weiter.
(Benutzername und Passwort beim login habe ich bei mir korrekt gesetzt. Gibt auch im httpheader ein "HTTP/1.0 200 OK". Habe ich hier nur rausgenommen.)
define AccessPoint HTTPMOD http://benutzername:passwort@192.168.178.43/ 60

Gibt es eine Möglichkeit "einfach" zu sagen "wenn die Webseite aufgerufen werden kann, dann Status ok. Wenn sie nicht reagiert, dann nicht ok" ?
Diesen "OK"- oder "nicht OK"-Status möchte ich nutzen, um ihn in FHEM oder meinem FTUI anzuzeigen und mich bei "nicht-OK" per Telegram benachrichtigen zu lassen. Telegram läuft bei mir auf andere Events schon ok.

Danke euch vorab für die Hilfe.

amenomade

Also, wenn HTTPMOD die Antwort HTTP/1.0 200 OK liefert, dann ist die Webseite auf jeden Fall erreichbar. Das sollte reichen für deinen Bedarf? Ich würde aber den HTTPMOD auf 192.168.178.43/index.asp statt nur 192.168.178.43/ definieren.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

olvis

Ja, das sollte reichen.
Die Änderung auf index.asp kann ich ja ohne Probleme machen.
Aber was lese ich jetzt wie aus, um das als OK oder nicht-OK zu interpretieren ?
Da stehe ich auf dem Schlauch bzw habe das Wissen nicht.  :)

DS_Starter

Vielleicht hättest du auch über syslog eine Möglichkeit einen Fehlerzustand zu erkennen. Die meisten Netzwerkgeräte bieten es an ihre events an einen syslog Server zu senden.
Wenn das etwas für dich wäre, könntest du das Modul Log2Syslog im Server-mode einsetzen, Mitteilungen deines AP empfangen und per notify darauf reagieren.

ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

olvis

Hi, Syslog ist keine Option. hier geht es um einen billigen Router (EDIMAX), der als AP konfiguriert ist.
Ich bin also drauf angeweisen, zu prüfen, ob ich die Web Oberfläche erreiche oder nicht.

amenomade

#5
Zitat von: olvis am 15 Oktober 2018, 16:21:22
Ja, das sollte reichen.
Die Änderung auf index.asp kann ich ja ohne Probleme machen.
Aber was lese ich jetzt wie aus, um das als OK oder nicht-OK zu interpretieren ?
Da stehe ich auf dem Schlauch bzw habe das Wissen nicht.  :)

z.B. mitattr AccessPoint reading01Name retcode
attr AccessPoint reading01Regex HTTP/1.0 ([\d]+)


Mit attr showError kannst Du auch mit dem Reading LAST_ERROR spielen
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

olvis

Super. Danke.
Und mit
attr AccessPoint stateFormat retcode
kann ich den Wert dann in den State setzen und normal anzeigen/auslesen, z.B. für Dashboards.
Und mit
define AccessPointCheck at +*01:00:00 { if
(ReadingsVal("AccessPoint","retcode",404) != 200)
{ fhem("set Telegram message AccessPoint down") } }

müsste ich doch dann, mit hier als Beispiel stündlichem Check, ein Telegram bekommen (Telegram bei mir als "Telegram" aufgesetzt), wenn der retcode ungleich 200 ist, korrekt ?

d0m2011

Hallo zusammen,

ich habe das Ganze hier anhand der Anleitung umgesetzt.
Leider bekomme ich immer, auch wenn die Seite nicht verfügbar ist, folgenden httpheader:
HTTP/1.1 200 OK
Server: nginx/1.10.3
Date: Wed, 10 Apr 2019 19:41:15 GMT
Content-Type: text/html
Content-Length: 39530
Last-Modified: Wed, 10 Apr 2019 19:24:39 GMT
Connection: close
ETag: "5cae42f7-9a6a"
Accept-Ranges: bytes


Mit dem Regex HTTP/1.1 ([\d]+) kann ich somit nicht unterscheiden, ob die Seite einmal nicht verfügbar ist.
Feedback ist immer "200" -> erreichbar.

Wo liegt denn der Fehler?
Bei Last_Error zeigt sich, dass die Seite nicht verfügbar ist. Feedback ist jedoch weiterhin immer "200"

frank

vergleiche mal den timestamp von last_error, denn dieses reading wird nur bei einem fehler aktualisiert. der angezeigte fehler kann also schon alt sein.

dein header passt nicht zu "nicht erreichbar".
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html