NEWS
Hilfe bei Skripte von request auf httpGet umbauen
-
@liv-in-sky sagte in Hilfe bei Skripte von request auf httpGet umbauen:
vielleicht hat der ersteller lust, da nochmal draufzuschauen
Hab Oliver im Ursprungsthread geschrieben.
Ah, seh gerade, dass du ihn eh verlinkt hast.
-
wäre cool, wenn er hilft, er hat def mehr ahnung von solchen abfragen
-
@liv-in-sky sagte in Hilfe bei Skripte von request auf httpGet umbauen:
dann sudo crontab -e öffnen und folgenden eintrag eingeben: */1 * * * * /usr/local/bin/httptest
muss danach rebootet werden, oder läuft der Cron gleich los?
-
@negalein
Läuft sofort los -
@negalein
Ob alles richtig ist stellst du am besten so fest
Gehe ins Verzeichnis und rufe einfach httptest auf, dann siehst du was passiert -
@liv-in-sky sagte in Hilfe bei Skripte von request auf httpGet umbauen:
Läuft sofort los
Ok, DP ändert sich nicht.
der Port bei der ioB-IP ist eh der normale (8081 in meinem Fall)?
-
@liv-in-sky sagte in Hilfe bei Skripte von request auf httpGet umbauen:
Gehe ins Verzeichnis und rufe einfach httptest auf, dann siehst du was passiert
pi@raspberrypi:~ $ cd /usr/local/bin/ pi@raspberrypi:/usr/local/bin $ httptest Warning: Failed to read curl-format.txt/usr/local/bin/httptest: command substitution: Zeile 4: Syntaxfehler beim unerwarteten Wort `|' /usr/local/bin/httptest: command substitution: Zeile 4: `| awk '{print $2}' | sed -e 's/s//'' Warning: Failed to read curl-format.txtcurl: no URL specified! curl: try 'curl --help' or 'curl --manual' for more information /usr/local/bin/httptest: Zeile 6: http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365: Datei oder Verzeichnis nicht gefunden /usr/local/bin/httptest: Zeile 5: iobroker: Kommando nicht gefunden. Warning: Failed to read curl-format.txtcurl: no URL specified! curl: try 'curl --help' or 'curl --manual' for more information /usr/local/bin/httptest: Zeile 8: http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365: Datei oder Verzeichnis nicht gefunden /usr/local/bin/httptest: Zeile 7: iobroker: Kommando nicht gefunden. Warning: Failed to read curl-format.txtcurl: no URL specified! curl: try 'curl --help' or 'curl --manual' for more information /usr/local/bin/httptest: Zeile 10: http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365: Datei oder Verzeichnis nicht gefunden /usr/local/bin/httptest: Zeile 9: iobroker: Kommando nicht gefunden. /usr/local/bin/httptest: Zeile 11: iobroker: Kommando nicht gefunden. pi@raspberrypi:/usr/local/bin $
-
Ich schau einmal.
Allerdings gelten die erwähnten Herausforderungen im Post
https://forum.iobroker.net/topic/60747/daten-aus-pw-geschützte-website/20?_=1716846281603Request kann das alles in der vorliegenden Form.
Axios nur mit diversen zusatzbibliotheken. (Stichwort cookie jar und automatischer redirect), bzw mit relativ viel zusätzlichem code.Request ist immer noch keine schlechte Bibliothek
Sie ist depecated, da der maintainer keine neuen Features mehr hinzufügen möchte.
Vgl. auch diesen post -
@negalein poste doch mal deine httptest datei - da ist noch der wurm drin
-
damit scheine ich erfolg zu haben - wie gefällt dir diese lösung
//ab hier nix verändern const axios = require('axios'); const cheerio = require("cheerio"); const tough = require('tough-cookie'); const { wrapper } = require('axios-cookiejar-support'); const cookieJar = new tough.CookieJar(); const client = wrapper(axios.create({ jar: cookieJar, withCredentials: true, })); let $; async function main() { const optionsLogin = { method: 'POST', url: 'https://netservice.iqcard.at/de/login', data: `BENUID=${user}&PASSWT=${pass}&login-form-submit=login`, headers: { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7', 'Cache-Control': 'no-cache', 'Content-Type': 'application/x-www-form-urlencoded', 'DNT': '1', 'Origin': 'https://netservice.iqcard.at', 'Pragma': 'no-cache', 'Sec-CH-UA': '"Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"', 'Sec-CH-UA-Mobile': '?0', 'Sec-CH-UA-Platform': '"Windows"', 'Sec-Fetch-Dest': 'empty', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Site': 'same-origin', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36', 'Cookie': 'cAccept=true; NETSERVICE=true; IQCARDPASSWT=; IQCARDBENUID= ', 'Referer': 'https://netservice.iqcard.at/de/kunden' }, maxRedirects: 5, // Anzahl der zu folgenden Redirects withCredentials: true // für das Cookie-Handling }; const optionsPriceinfo = { method: 'GET', url: 'https://netservice.iqcard.at/de/netservice_preisinfo', headers: { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7', 'Cache-Control': 'no-cache', 'DNT': '1', 'Origin': 'https://netservice.iqcard.at', 'Pragma': 'no-cache', 'Sec-CH-UA': '"Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"', 'Sec-CH-UA-Mobile': '?0', 'Sec-CH-UA-Platform': '"Windows"', 'Sec-Fetch-Dest': 'empty', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Site': 'same-origin', 'Sec-Fetch-User': '?1', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36', 'Referer': 'https://netservice.iqcard.at/de/netservice' }, maxRedirects: 5, // Anzahl der zu folgenden Redirects withCredentials: true // für das Cookie-Handling }; // Anmeldung mit POST-Request client(optionsLogin) .then(() => { // Erfolgreiche Anmeldung, jetzt GET-Request für Preisinfo return client(optionsPriceinfo); }) .then(response => { // Verarbeitung der Antwort const data = analyze(response.data); log(data); writeDatapoint(data); }) .catch(error => { console.error('Error making the request:', error); });
output
-
@liv-in-sky sagte in Hilfe bei Skripte von request auf httpGet umbauen:
poste doch mal deine httptest datei - da ist noch der wurm drin
#!/bin/bash dauer=`curl -w "@curl-format.txt" -s 'http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365' | grep time_total -m 1 | awk '{print $2}' | sed -e 's/s//'` #curl "http://10.0.1.202:8081/set/0_userdata.0.Tests.htttpget-test?value=$dauer" iobroker state set 0_userdata.0.Tests.htttpget-test $dauer echo Temp: $dauer sleep 15 tempi=`curl -w "@curl-format.txt" -s 'http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365' | grep time_total -m 1 | awk '{print $2}' | sed -e 's/s//'` iobroker state set 0_userdata.0.Tests.htttpget-test $tempi sleep 15 tempi=`curl -w "@curl-format.txt" -s 'http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365' | grep time_total -m 1 | awk '{print $2}' | sed -e 's/s//'` iobroker state set 0_userdata.0.Tests.htttpget-test $tempi sleep 15 tempi=`curl -w "@curl-format.txt" -s 'http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365' | grep time_total -m 1 | awk '{print $2}' | sed -e 's/s//'` iobroker state set 0_userdata.0.Tests.htttpget-test $tempi
-
die datei curl-format.txt hast du ins verzeichnis kopiert ?
-
@liv-in-sky sagte in Hilfe bei Skripte von request auf httpGet umbauen:
die datei curl-format.txt hast du ins verzeichnis kopiert ?
yes
-
in der ersten zeile dauer=......
ist da ein zeilenumbruch vor | awk '{print $2}' | sed -e 's/s/ - das muss in einer zeile stehen
-
kopiere das in die datei
#!/bin/bash dauer=`curl -w "@curl-format.txt" -s 'http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365' | grep time_total -m 1 | awk '{print $2}' | sed -e 's/s//'` iobroker state set 0_userdata.0.Tests.htttpget-test $dauer sleep 15 tempi=`curl -w "@curl-format.txt" -s 'http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365' | grep time_total -m 1 | awk '{print $2}' | sed -e 's/s//'` iobroker state set 0_userdata.0.Tests.htttpget-test $tempi sleep 15 tempi=`curl -w "@curl-format.txt" -s 'http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365' | grep time_total -m 1 | awk '{print $2}' | sed -e 's/s//'` iobroker state set 0_userdata.0.Tests.htttpget-test $tempi sleep 15 tempi=`curl -w "@curl-format.txt" -s 'http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365' | grep time_total -m 1 | awk '{print $2}' | sed -e 's/s//'` iobroker state set 0_userdata.0.Tests.htttpget-test $tempi
es dürfen keine zeilenumbrüche in den befehlen drin sein
-
@liv-in-sky sagte in Hilfe bei Skripte von request auf httpGet umbauen:
ist da ein zeilenumbruch vor | awk '{print $2}' | sed -e 's/s/ - das muss in einer zeile stehen
stimmt, da hats einen Zeilenumbruch reingehaun.
Aber auch ohne kommt nur:
pi@raspberrypi:/usr/local/bin $ httptest Warning: Failed to read curl-format.txtWarning: Failed to read curl-format.txtcurl: no URL specified! curl: try 'curl --help' or 'curl --manual' for more information /usr/local/bin/httptest: Zeile 5: http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365: Datei oder Verzeichnis nicht gefunden /usr/local/bin/httptest: Zeile 4: iobroker: Kommando nicht gefunden. Warning: Failed to read curl-format.txtcurl: no URL specified! curl: try 'curl --help' or 'curl --manual' for more information /usr/local/bin/httptest: Zeile 7: http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365: Datei oder Verzeichnis nicht gefunden /usr/local/bin/httptest: Zeile 6: iobroker: Kommando nicht gefunden. Warning: Failed to read curl-format.txtcurl: no URL specified! curl: try 'curl --help' or 'curl --manual' for more information /usr/local/bin/httptest: Zeile 9: http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365: Datei oder Verzeichnis nicht gefunden /usr/local/bin/httptest: Zeile 8: iobroker: Kommando nicht gefunden. /usr/local/bin/httptest: Zeile 10: iobroker: Kommando nicht gefunden.
-
funktioniert der befehl in der console allein
curl -w "@curl-format.txt" -s 'http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365' | grep time_total -m 1 | awk '{print $2}' | sed -e 's/s//'
-
@liv-in-sky sagte in Hilfe bei Skripte von request auf httpGet umbauen:
kopiere das in die datei
pi@raspberrypi:/usr/local/bin $ httptest Warning: Failed to read curl-format.txtWarning: Failed to read curl-format.txtcurl: no URL specified! curl: try 'curl --help' or 'curl --manual' for more information /usr/local/bin/httptest: Zeile 5: http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365: Datei oder Verzeichnis nicht gefunden /usr/local/bin/httptest: Zeile 4: iobroker: Kommando nicht gefunden. Warning: Failed to read curl-format.txtcurl: no URL specified! curl: try 'curl --help' or 'curl --manual' for more information /usr/local/bin/httptest: Zeile 7: http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365: Datei oder Verzeichnis nicht gefunden /usr/local/bin/httptest: Zeile 6: iobroker: Kommando nicht gefunden. Warning: Failed to read curl-format.txtcurl: no URL specified! curl: try 'curl --help' or 'curl --manual' for more information /usr/local/bin/httptest: Zeile 9: http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365: Datei oder Verzeichnis nicht gefunden /usr/local/bin/httptest: Zeile 8: iobroker: Kommando nicht gefunden. /usr/local/bin/httptest: Zeile 10: iobroker: Kommando nicht gefunden. pi@raspberrypi:/usr/local/bin $ sudo nano httptest pi@raspberrypi:/usr/local/bin $ httptest Warning: Failed to read curl-format.txt/usr/local/bin/httptest: Zeile 3: iobroker: Kommando nicht gefunden. Warning: Failed to read curl-format.txt/usr/local/bin/httptest: Zeile 6: iobroker: Kommando nicht gefunden. Warning: Failed to read curl-format.txt/usr/local/bin/httptest: Zeile 9: iobroker: Kommando nicht gefunden. Warning: Failed to read curl-format.txt/usr/local/bin/httptest: Zeile 12: iobroker: Kommando nicht gefunden. pi@raspberrypi:/usr/local/bin $
-
@liv-in-sky sagte in Hilfe bei Skripte von request auf httpGet umbauen:
funktioniert der befehl in der console allein
leider nein
pi@raspberrypi:/usr/local/bin $ curl -w "@curl-format.txt" -s 'http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365' | grep time_total -m 1 | awk '{print $2}' | sed -e 's/s//' Warning: Failed to read curl-format.txtpi@raspberrypi:/usr/local/bin $
-
@negalein zeig mal ls -la im verzeichnis -