Forum: PC-Programmierung Wie mit CURL Status oder Eingänge abfragen


von curl (Gast)


Lesenswert?

Hallo,

ich habe eine kleine HW bekommen die paar digitale Ausgänge und
Eingänge hat. Ein Webserver ist vorhanden und alles funktioniert wenn
man mit dem Browser arbeitet.

Ich möchte jetzt gerne ohne Browser einzelne Ausgänge setzen
und abfragen. Dazu benutze ich CURL. Da ich eigentlich keine Ahnung
von CURL, HTTP, CGI etc. habe, konnte ich nach langem suchen im WEB und
durch viel ausprobieren Ausgänge setzen und rückzusetzen.

also z.B.

curl -d "pin=2&val=1" http://192.168.11.100/dout.cgi

Man kann damit Batchfiles erstellen und mit einem Mausklick den
entsprechenden Ausgang setzen oder rücksetzen.

Mein Problem ist jetzt, wie kann ich Eingänge abfragen und das
zurückgelieferte Ergebnis weiterverarbeiten ?

Könnte mir da bitte jemand Hilfestellung geben?

(!!Ja, ich habe schon im WEB gesucht und damit sehr viel Zeit verbracht,
bin aber für meine Verständnis nicht fündig geworden!!)

Danke

von StinkyWinky (Gast)


Lesenswert?

Wenn du mit dem Browser den Status angezeigt bekommst (und nur dann) 
geht es auch mit CURL.
Im Prinzip kannst du mit CURL den selben Output abholen, wie du mit 
"Zeige Quelltext" im Browser vorgesetzt bekommst. Dann noch ein wenig 
nachbearbeiten und fertig.
Ob das aber auf der Kommandozeile mit Batch-Verarbeitung etwas wird, 
glaube ich eher nicht. Da musst du wohle einfache eine 
Programmiersprache benützen.

von curl (Gast)


Lesenswert?

StinkyWinky schrieb:
> Wenn du mit dem Browser den Status angezeigt bekommst (und nur dann)
> geht es auch mit CURL.

Ja, das glaube ich auch.

Frage ist aber, wie muss der CURL Einzeiler dazu aussehen?

von StinkyWinky (Gast)


Lesenswert?

Ich habe das in C programmiert. Dort genügt ein Einzeiler definitiv 
nicht. Wie das auf der Kommandozeile gehen würde, kann ich nur vermuten:

Die Seite in eine Datei herunterladen:
curl -o savedpage.txt http://192.168.11.100/

Dann die Datei mittels geeignetem Skript parsen, und das Resultat zu 
weiteren Verwendung bereitstellen.

von Andreas E. (hismastersvoice)


Lesenswert?

Schaue Dir mal awk an, damit kannst Du die Ausgabe von Curl parsen und 
verarbeiten. Gibt es unter Linux, sollte es auch für Windows geben (OS 
hattest Du nicht angegeben).

Awk arbeitet Zeilenweise mit Dateien oder stdin als Input.

von Jens P. (picler)


Lesenswert?

StinkyWinky schrieb:
> Wenn du mit dem Browser den Status angezeigt bekommst (und nur dann)
> geht es auch mit CURL.
> Im Prinzip kannst du mit CURL den selben Output abholen, wie du mit
> "Zeige Quelltext" im Browser vorgesetzt bekommst. Dann noch ein wenig
> nachbearbeiten und fertig.

Meiner Meinung nach ist cURL dafür der falsche Weg. Es führen zwar viele 
Wege zum Ziel, ich würde in der Programmiersprache meiner Wahl die Seite 
einfach mit der Webdownload-Funktion, z.B. aus dem .NET-Framework 
herunterladen. Danach die Datei nach den gewünschten Daten durchsuchen 
(parsen) und schon hast du das gewünschte Ergebnis. In VB.NET dürften 
das so um die 30 Zeilen Code sein.

> Ob das aber auf der Kommandozeile mit Batch-Verarbeitung etwas wird,
> glaube ich eher nicht. Da musst du wohle einfache eine
> Programmiersprache benützen.

Sehe ich genauso. Das herunterladen ist nicht das Problem, allerdings 
die Suche und Aufbereitung der Daten. Da hätte ich jetzt keine Idee, wie 
das auf Kommandozeilen-Ebene laufen soll.

von curl (Gast)


Lesenswert?

Ich bedanke mich sehr für die verschiedenen Hinweise.

Da es auf den ersten Blick recht einfach ist mit CURL per Mausklick
ein Pin (Relais) ein und auszuschalten, dachte ich naiver weise
das gilt auch irgendwie für's Auslesen (OS ist WIN8.1)

Eure Hinweise und Information geben mir aber wieder Input zum Weiter-
suchen.

Schön wäre halt, wenn man irgendwie ein Beispiel hätte, an dem man
sich "festhalten " könnte. Als unbedarfter Einsteiger ist es sonst
schwierig.

Aber nochmals vielen Dank für die Hinweise, ich denke das hilft schon
mal.

von Jack (Gast)


Lesenswert?

Jens P. schrieb:
> Meiner Meinung nach ist cURL dafür der falsche Weg.

Das kommt auf die Seite an. Wenn man mit einem nachgeschalteten 
Skript-Fünfzeiler die Daten bequem per Patternmatching aus der Seite 
rausfischen kann, dann geht das schnell und bequem mit curl. curl ist 
auch nichts anderes als eine
> Webdownload-Funktion.

Kommt vom Webserver hingegen ein moderner Wust aus minimaler HTML-Seite 
und ein paar tausend Zeilen JavaScript, dann reicht ein Download der 
Seite nicht, egal mit welcher Programmiersprache. Dann braucht man 
notfalls eine Browser-Komponente mit JavaScript-Unterstützung und muss, 
nachdem die Seite im Speicher fertig gerendert ist, das DOM nach den 
Daten durchsuchen. Das ist dann der Punkt, wo man dem Hersteller der 
Hardware sagen sollte, dass er mal auf sein Leben klarkommen soll und 
eine vernünftige Schnittstelle anbieten sollte.

curl schrieb:
> Da es auf den ersten Blick recht einfach ist mit CURL per Mausklick
> ein Pin (Relais) ein und auszuschalten, dachte ich naiver weise
> das gilt auch irgendwie für's Auslesen (OS ist WIN8.1)

Das hat nichts mit dem OS zu tun, sondern wie der Hersteller der 
Hardware seinen eingebauten Webserver und seine Webseiten gestaltet hat.

> Schön wäre halt, wenn man irgendwie ein Beispiel hätte, an dem man
> sich "festhalten " könnte.

Das können wir dir nicht liefern, weil wir nicht wissen wie der 
Hersteller deiner Hardware seine Webseiten und Web-Schnittstellen 
aufgebaut hat. He, wir wissen nicht mal, wer der Hersteller ist.

> Als unbedarfter Einsteiger ist es sonst
> schwierig.

Frag den Hersteller nach vollständigen Beispielen.

von --- (Gast)


Lesenswert?

1
FOR /F "usebackq" %%i IN (`wget -O - www.blubdidup.com ^| sed -n "s/.*://" `) DO ECHO %%i

von curl (Gast)


Lesenswert?

Jack schrieb:
> Das hat nichts mit dem OS zu tun, sondern wie der Hersteller der
> Hardware seinen eingebauten Webserver und seine Webseiten gestaltet hat.
>
Das wusste ich, nur wurde in einem vorherigen Beitrag nach dem OS 
gefragt.
>
> Das können wir dir nicht liefern, weil wir nicht wissen wie der
> Hersteller deiner Hardware seine Webseiten und Web-Schnittstellen
> aufgebaut hat. He, wir wissen nicht mal, wer der Hersteller ist.
>
Das verstehe ich. Wollte auch keine perfekt Lösung sondern nur ein 
Lösungsansatz, sozusagen nur eine prinzipielle Lösung.

Aber bitte. Hier ist der download link. Im Verzeichnis
WIZ550web_Webpages\0_Basic_Demopages ist der HTML Code
(index.html)den ich benutze.

http://wizwiki.net/wiki/lib/exe/fetch.php?tok=1e395e&media=https%3A%2F%2Fgithub.com%2FWiznet%2FWIZ550web%2Farchive%2Fv1.1.1.zip

Jetzt müsste alles bekannt sein, oder ?
>
> Frag den Hersteller nach vollständigen Beispielen.

Der Herstellung sagt leider gar nichts dazu. Musste mir den ersten Teil
(setzen von Ausgängen) auch selbst erarbeiten.

von curl (Gast)


Lesenswert?

--- schrieb:
> FOR /F "usebackq" %%i IN (`wget -O - www.blubdidup.com ^| sed -n
> "s/.*://" `) DO ECHO %%i

Sagt mir leider nichts. Wäre für eine Erklärung sehr dankbar!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.