Webserver abfragen

Alle Fragen zur Netzwerkkommunikation
catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Webserver abfragen

Beitrag von catweasel »

Moin

Ich möchte meinen Webserver abfragen über eine Seite die als ../status.cgi dort zur Verfügung gestellt wird (es handelt sich um einen Nagios-Server, falls das jemanden etwas sagt)
Allerdings habe ich im Moment überhaupt keine Idee wie ich anfangen kann. :oops:
Kann mir jemand einen Tipp geben wie ich die Informationen in mein Programm bekomme, ähnlich wie bei einem Web-Browser wenn ich die Seite aufrufe?
Ich sehe zumindest keine fertigen Komponenten in Lazarus für cgi-Abfragen.

Gruß
Michael

Benutzeravatar
theo
Beiträge: 10897
Registriert: Mo 11. Sep 2006, 19:01

Re: Webserver abfragen

Beitrag von theo »

catweasel hat geschrieben: Ich sehe zumindest keine fertigen Komponenten in Lazarus für cgi-Abfragen.
Es gibt kein cgi-Protokoll auf der Client-Seite.
Es gibt das http Protokoll. Das kannst du z.B. mit Synapse benutzen:
http://synapse.ararat.cz/" onclick="window.open(this.href);return false;
Speziell:
http://synapse.ararat.cz/doc/help/httpsend.html" onclick="window.open(this.href);return false;

catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Re: Webserver abfragen

Beitrag von catweasel »

theo hat geschrieben:Es gibt kein cgi-Protokoll auf der Client-Seite.
Es gibt das http Protokoll. Das kannst du z.B. mit Synapse benutzen:
http://synapse.ararat.cz/" onclick="window.open(this.href);return false;
Speziell:
http://synapse.ararat.cz/doc/help/httpsend.html" onclick="window.open(this.href);return false;
Ich habe es jetzt bei mir eingebunden und mithilfe eines anderen Beispiels hier im Forum auch schon das erste Erfolgserlebnis. :D
Zweifellos werde ich dazu noch eine Menge Fragen haben, bis hierher aber schon einmal Danke

catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Re: Webserver abfragen

Beitrag von catweasel »

Tja, wie schon angedroht stehe ich vor dem nächsten Berg und komme nicht hoch...

Inzwischen habe ich via HttpGetText von Synapse den Quelltext der Seite vom Webbrowser abgerufen und zunächst in ein Memofeld gespeichert:

Code: Alles auswählen

procedure TForm1.Button2Click(Sender: TObject);
var
 Response: TStringList;
 Url: String;
begin
  Url := 'http://192.168.1.105/nagios/cgi-bin/status.cgi';
  Response:=TStringList.create;
  try
     if not HttpGetText(Url ,Response)  then ShowMessage('Übertragungsfehler');
     Memo2.Lines.Add( Response.Text );
  finally
    Response.free;
  end;
end;
Der Berg den ist nicht hochkomme heißt "parsen".
Ich will die Informationen die auf der Webseite stehen auswerten und habe auch u.a. als Beispiel FastHtmlParse gefunden, aber ich habe keine Idee wie ich das benutzen muß.
Kennt das jemand, oder gibt es andere Komponenten um die Infos aus der HTML Seite zu bekommen?

Gruß
Michael

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2822
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Webserver abfragen

Beitrag von m.fuchs »

catweasel hat geschrieben:Tja, wie schon angedroht stehe ich vor dem nächsten Berg und komme nicht hoch...

Code: Alles auswählen

Url := 'http://192.168.1.105/nagios/cgi-bin/status.cgi';
Der Berg den ist nicht hochkomme heißt "parsen".
Ich will die Informationen die auf der Webseite stehen auswerten und habe auch u.a. als Beispiel FastHtmlParse gefunden, aber ich habe keine Idee wie ich das benutzen muß.
Kennt das jemand, oder gibt es andere Komponenten um die Infos aus der HTML Seite zu bekommen?
Das sieht verdächtig danach aus, als würdest du eine für Menschen gemacht Webseite nach Informationen durchsuchen wollen. Ist das denn notwendig?
Für Nagios gibt es doch einige Möglichkeiten das ganze per API abzufragen. Schau mal hier: http://exchange.nagios.org/directory/Addons/APIs" onclick="window.open(this.href);return false;
Da kann man fröhlich per SOAP, JSON oder sogar RSS die Infos abfragen. Das ist alles besser als HTML zu parsen.

mfg
Micha
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Re: Webserver abfragen

Beitrag von catweasel »

m.fuchs hat geschrieben:Das sieht verdächtig danach aus, als würdest du eine für Menschen gemacht Webseite nach Informationen durchsuchen wollen. Ist das denn notwendig?
Für Nagios gibt es doch einige Möglichkeiten das ganze per API abzufragen. Schau mal hier: http://exchange.nagios.org/directory/Addons/APIs" onclick="window.open(this.href);return false;
Da kann man fröhlich per SOAP, JSON oder sogar RSS die Infos abfragen. Das ist alles besser als HTML zu parsen.
Ich will eine einfache Anwendung schreiben um die Stati von Routern/Servern abzufragen ohne oben auf einen Browser zurück zu greifen.
Vergleichbar mit Nagstamon falls das Dir was sagt.
Leider habe ich außer parsen keine Idee wie ich die entsprechenden Daten die ich via HttpGetText zurück bekomme z.B. in ein ListView zu schreiben :(
Und beim parsen weis ich auch nicht wie ich es anstellen soll...

Gruß
Michael

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2822
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Webserver abfragen

Beitrag von m.fuchs »

catweasel hat geschrieben:Ich will eine einfache Anwendung schreiben um die Stati von Routern/Servern abzufragen ohne oben auf einen Browser zurück zu greifen.
Vergleichbar mit Nagstamon falls das Dir was sagt.
Leider habe ich außer parsen keine Idee wie ich die entsprechenden Daten die ich via HttpGetText zurück bekomme z.B. in ein ListView zu schreiben :(
Und beim parsen weis ich auch nicht wie ich es anstellen soll...
Nochmal: diese Url die du aufrufst zeigt doch mit Sicherheit eine für Menschen gemacht Übersichtsseite mit den verschiedenen Status der überwachten Server an? Soetwas zu parsen ist recht aufwändig und unnötig. Auf der von mir genannten Seite findest du unter anderem einen JSON-Connector. Dieses Plugin installierst du in deinem Nagios und machst dann mit HttpGetText eine Abfrage auf dieses Plugin. Es liefert eine JSON-codiert Übersicht (die vermutlich konfiguriert werdne kann) mit den Status der Server aus. JSON ist einfacher zu parsen, es gibt in FPC/Lazarus aber sogar schon eine Unterstützung mit der du gezielt die Werte auslesen kannst. Und diese Werte kannst du dann leicht in ein ListView schreiben.

hth
Micha
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Re: Webserver abfragen

Beitrag von catweasel »

m.fuchs hat geschrieben:Auf der von mir genannten Seite findest du unter anderem einen JSON-Connector. Dieses Plugin installierst du in deinem Nagios und machst dann mit HttpGetText eine Abfrage auf dieses Plugin. Es liefert eine JSON-codiert Übersicht (die vermutlich konfiguriert werdne kann) mit den Status der Server aus. JSON ist einfacher zu parsen, es gibt in FPC/Lazarus aber sogar schon eine Unterstützung mit der du gezielt die Werte auslesen kannst. Und diese Werte kannst du dann leicht in ein ListView schreiben.
Ich werde es mir mal anschauen. Danke für den Tip.

Gruß
Michael

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Webserver abfragen

Beitrag von mschnell »

catweasel hat geschrieben:Der Berg den ist nicht hochkomme heißt "parsen".
Mein Sohn hat vor einiger ,Zeit 'mal einen HTML-Parser gebaut. Er nimmt den HTML-Text anhand der Keywords auseinander (sind noch nicht alle realisiert, ist aber leicht erweiterbar) und baut daraus eine ordentliche Baumstruktur aus verketteten Objekten. Darin kann man dann die gewünschten Informationen vernünftig strukturiert suchen.

Man kann dann auch die Struktur verändern und ergänzen, und die Klasse baut dann auf Wunsch wieder HTML-Text daraus, den man auf als Webseite hochlanden und mit einem Browser angucken kann.

(Ist alles aber nur mit Delphi getestet.)

-Michael

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Webserver abfragen

Beitrag von Socke »

mschnell hat geschrieben:Mein Sohn hat vor einiger ,Zeit 'mal einen HTML-Parser gebaut.
Wenn die Seite gültiges XHTML enthält, könnte man die auch mit den Units xml, xmlreader, dom, usw. auseinandernehmen. Wenn nicht, schau mal in die Units html (und ähnliche Namen).

Das ist natürlich immer noch komplizierter als eine vergleichsweise einfache/strukturierte JSON-Ausgabe zu verarbeiten.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2822
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Webserver abfragen

Beitrag von m.fuchs »

Socke hat geschrieben:Wenn die Seite gültiges XHTML enthält, könnte man die auch mit den Units xml, xmlreader, dom, usw. auseinandernehmen. Wenn nicht, schau mal in die Units html (und ähnliche Namen).
Das ist natürlich immer noch komplizierter als eine vergleichsweise einfache/strukturierte JSON-Ausgabe zu verarbeiten.
Viel schlimmer ist, dass die Ausgabe einer Webseite sich einfach mal so von Version zu Version ändern kann. Bei einem Webservice ist das deutlich unwahrscheinlicher, da man dort ja möchte dass externe Programme andocken. Treten doch mal Änderungen auf, werden sie dann meist auch dokumentiert. Letztendlich ist man mit der JSON-API auf der einfacheren und sicheren Seite.

mfg
Micha
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

felix96
Beiträge: 287
Registriert: So 29. Nov 2009, 17:44
CPU-Target: 32BitWin+64bitUbunt

Re: Webserver abfragen

Beitrag von felix96 »

Ist die Seite von dir?
Wenn ja könntest du doch den Html-Code so abändern:

Code: Alles auswählen

Status: On nach
Status: <!--st-->On<!--/st-->

Und dann mittels Regulären-Ausdrücken das On heraus filtern.

Habe die Website nicht gesehen, deshalb weiß ich nicht, ob dass so geht : - (
Danke schonmal für eure Antworten
it´s not a bug, it´s a feature!

catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Re: Webserver abfragen

Beitrag von catweasel »

felix96 hat geschrieben:Ist die Seite von dir?
Ne, das ist eine Seite die automatisch von dem Monitoringsystem "Nagios" erstellt wird.
Ich frage mich nur wie die Programmierer von Nagstamon oder dem Firefox-Plugin Nagios-Checker gemacht haben. Bei denen ist auch keine Änderung/Installation der Nagios Konfig notwendig und wenn ich es irgendwie vermeiden kann will ich auch darauf verzichten.

Gruß
Michael

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2822
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Webserver abfragen

Beitrag von m.fuchs »

catweasel hat geschrieben:Ich frage mich nur wie die Programmierer von Nagstamon oder dem Firefox-Plugin Nagios-Checker gemacht haben. Bei denen ist auch keine Änderung/Installation der Nagios Konfig notwendig und wenn ich es irgendwie vermeiden kann will ich auch darauf verzichten.
Ein Blick auf http://nagstamon.svn.sourceforge.net/vi ... iew=markup" onclick="window.open(this.href);return false; sagt mir, dass das Nagstamin-Team das Gleiche macht was du eigentlich machen willst: die Webseite parsen. Sowas kann man auch machen, es ist halt nur aufwändig.

mfg
Michael
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

BeniBela
Beiträge: 321
Registriert: Sa 21. Mär 2009, 17:31
OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4)
CPU-Target: 64 Bit

Re: Webserver abfragen

Beitrag von BeniBela »

Das sollte auch ganz einfach (für eine bestimmte nagios-Version) mit meinen Internet-Tools gehen; Seite runterladen, HTML zerlegen und bestimmte Stellen suchen ist alles dabei...

Antworten