NEWS
Curl Befehl unter Windows geht nicht wie unter Linux Reolink
-
Hallo,
ich glaub es ist nur eine Kleinigkeit mit irgendwelchen Satzzeichen, aber ich beiße mir hier schon ewig die Zähne aus.Folgendes: Ich will einen Curl Befehl unter einer Iobroker Windows Installation mit dem Exec Befehl ausführen.
Wenn ich den Curl Befehl unter einer Iobroker Linux Version (oder hier im Beispiel auf einer CCU3, weil ich gerade die Iobroker Linux Version nicht da habe) ausführe funktioniert er, hier der Befehl:
curl -s POST "http://192.168.xx.xxx/cgi-bin/api.cgi?user=admin&password=XXX" -d '[{"cmd":"PtzCtrl","action":0,"param":{"channel":0,"op":"ToPos","speed":64,"id":1}}]'
Es kommt eine saubere Ausgabe und die Cam bewegt sich:
Mache ich das ganze unter Windows, dann funktioniert es nicht, es kommt eine fehlerhafte Ausgabe:
Hat hier jemand eine Idee?
Schonmal Danke im Voraus.P.S. Ich weiß das es einen Reolink-Adapter gibt, aber da fehlen mir einige Funktionen, mir gehts also nicht nur um PTZ, dass soll nur ein Beispiel sein.
-
@nik82
Du hast nicht zufällig Sonderzeichen im Passwort? -
@mcm57
Shit, doch ich habe eine Ausrufezeichen drin.
Geht das unter Windows nicht mit Sonderzeichen?
Möchte ungern jetzt mein Passwort überall ändern, habe mehrere Cams und schon einige andere scripte laufen wo das Passwort schon drin ist. -
@nik82 sagte in Curl Befehl unter Windows geht nicht wie unter Linux Reolink:
Geht das unter Windows nicht mit Sonderzeichen?
Gemeinhin kann man diese Strings escapen. In Anführungszeichen (in diversen Formen) setzen ist da gängig. Wie das aber bei Windows curl geht weiß ich auch nicht.
-
-
@mcm57 unter Windows musst du viel mehr escapen, zum Beispiel alle Anführungsstriche.
Hier ein Beispiel:curl.exe -X POST -H "Content-Type:application/json" -d "{\"jsonrpc\": \"2.0\",\"method\":\"user.login\",\"params\":{\"user\":\"admin\",\"password\":\"test1234\"},\"id\":1}" http://10.106.207.105/api_jsonrpc.php
Dein Aufruf müsste also eher so sein:
-d "[{\"cmd\":\"PtzCtrl\",\"action\":0,\"param\":{\"channel\":0,\"op\":\"ToPos\",\"speed\":64,\"id\":1}}]"
Und statt
'
dann"
, also normale Anführungszeichen nur ohne Escapen
Das mit dem Passwort könnte hinzu kommen -
Klasse, vielen Dank.
So klappt es, und wenn man die URL noch in Anführungsstriche macht, dann sogar mit Sonderzeichen im Passwort:
curl.exe -X POST -H "Content-Type:application/json" -d "[{\"cmd\":\"PtzCtrl\",\"action\":0,\"param\":{\"channel\":0,\"op\":\"ToPos\",\"speed\":64,\"id\":1}}]" "http://192.168.xx.xx/cgi-bin/api.cgi?user=admin&password=Pass!wort"