NEWS
Speedtest-Skript von kreyenborg.koeln für Kabel-Gigabit
-
@mephisto090 sagte in Speedtest-Skript von kreyenborg.koeln für Kabel-Gigabit:
root@iobroker
da brauchen wir nicht weitermachen
Leg Dir einen User mit Sudorechten an.
-
@djmarc75 das ist docker in diesem container läuft nur ein service und das ist iobroker. ich glaube da ist das egal außerdem ist der nach außen hin nicht offen.
-
@mephisto090 sagte in Speedtest-Skript von kreyenborg.koeln für Kabel-Gigabit:
außerdem ist der nach außen hin nicht offen.
Das ist ja kein Grund. Angriffe können ja auch von innen heraus erfolgen. Durch heruntergeladenen Code. Und dieser Code läuft mit den Rechten des users. Bei root halt ganz schlecht.
Aber bei Docker soll es ja auch irgendwelchen Gründen, die mir bis heute noch niemand plausibel darlegen konnte, angeblich nicht möglich sein eine ordentliche Rechteverwaltung zu haben. -
@mephisto090 Die Variablen passen noch. Ich habe gerade die aktuelle Version des Speedtest (Speedtest by Ookla 1.2.0.84) installiert.
Hier werden wie erwartet alle Daten gefüllt. -
@skb So habe mein Fehler gefunden. Irgendwie war das falsche speedtest-cli installiert. Es funktioniert jetzt und habe mal etwas das Skript angepasst. (Gerne kannst du es auf deiner Seite aktualisieren) Ich habe ein Trigger DP als Button hinzugefügt und das Skript den Button auswerten lassen. Des Weiteren ist Max. und Min. Ping dazugekommen sowie Paket Lost für Down- und Upload. Ich habe das Skript noch mit einer der letzten Statusmeldung ergänzt.
/* * @copyright 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln> * * @author 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln> * * Dieses Skript dient zur freien Verwendung in ioBroker zur Überprüfung Deiner Internetgeschwindkeit mit Hilfe von Speedtest. * Jegliche Verantwortung liegt beim Benutzer. Das Skript wurde unter Berücksichtigung der bestmöglichen Nutzung * und Performance entwickelt. * Der Entwickler versichert, das keine böswilligen Systemeingriffe im originalen Skript vorhanden sind. * * Sollte das Skript wider Erwarten nicht korrekt funktionieren, so hast Du jederzeit die Möglichkeit, Dich auf * https://www.kreyenborg.koeln * für Unterstützung zu melden. Jedes Skript besitzt seine eigene Kommentarseite, auf der, * nach zeitlicher Möglichkeit des Autors, Hilfe angeboten wird. Ein Anrecht hierauf besteht nicht! * * Ansprüche gegenüber Dritten bestehen nicht. * * Skript Name: Speedtest * Skript Version: 1.3 * Erstell-Datum: 29. November 2021 * */ // Datenpunkte neu erstellen var ueberschreiben = false; // Hauptdatenpunkt unterhalb javascript var datenpunkt = "Speedtest."; // Favorisierter Server // Liste: https://www.speedtest.net/speedtest-servers.php var fav_server = 0; // Speedtest Objekte var objekt = ["JSON_Output", "Ergebnisse.PaketLost_Download", "Ergebnisse.PaketLost_Upload", "Ergebnisse.Ping", "Ergebnisse.Ping_Min", "Ergebnisse.Ping_Max", "Ergebnisse.Jitter", "Ergebnisse.Download_MBit", "Ergebnisse.Upload_MBit", "Ergebnisse.Download_MB", "Ergebnisse.Upload_MB", "Ergebnisse.OriginalDownload", "Ergebnisse.OriginalUpload", "ISP", "IP", "Ergebnisse.URL", "Ergebnisse.ID", "Test.Server.ServerID", "Test.Server.ServerIP", "Test.Server.Name", "Test.Server.Stadt", "Test.Server.Land", "Test.Server.Adresse", "Test.Daten.Download", "Test.Daten.Upload", "Test.Daten.OriginalDownload", "Test.Daten.OriginalUpload", "Test.Daten.DauerDownload", "Test.Daten.DauerUpload", "Test.Daten.Letzter_Speedtest", "Trigger", "Status" ]; // Beschreibung der Objekte var beschreibung = ["JSON Ausgabe der Konsole", "Paketverlust in %", "Paketverlust in %", "Ping in ms", "Min. Ping in ms", "Max. Ping in ms", "Jitter in ms", "Download Geschwindigkeit in MBit/s", "Upload Geschwindigkeit in MBit/s", "Download Geschwindigkeit in MB/s", "Upload Geschwindigkeit in MB/s", "Download Geschwindigkeit in Byte/s", "Upload Geschwindigkeit in Byte/s", "Internet Service Provider", "externe IP", "Adresse der Ergebnisse", "ID der Ergebnisse", "ID des getesteten Servers", "IP des getesteten Servers", "Anbieter des getesteten Servers", "Stadt des getesteten Servers", "Land des getesteten Servers", "URL des getesteten Servers", "Download Daten in MB", "Upload Daten in MB", "Download Daten in Byte", "Upload Daten in Byte", "Dauer des Download Test", "Dauer des Upload Test", "Letzter Speedtest", "Startet den Speedtest", "Status vom letzten Speedtest" ]; // Einheiten der Objekte var einheiten = ["", "%", "%", "ms", "ms", "ms", "ms", "MBit/s", "MBit/s", "MB/s", "MB/s", "Byte/s", "Byte/s", "", "", "", "", "", "", "", "", "", "", "MB", "MB", "Byte", "Byte", "s", "s", "", "", "" ]; // Typen der Objekte var typen = ["string", "number", "number", "number", "number", "number", "number", "number", "number", "number", "number", "number", "number", "string", "string", "string", "string", "number", "string", "string", "string", "string", "string", "number", "number", "number", "number", "number", "number", "string", "boolean", "string" ]; // Rollen der Objekte var rolle = ["json", "value", "value", "value", "value", "value", "value", "value", "value", "value", "value", "value", "value", "text", "text", "text", "text", "value", "text", "text", "text", "text", "text", "value", "value", "value", "value", "value", "value", "text", "button", "text" ]; // Schreibe Werte des JSON String in ein Array function generiere_array(json_array) { var j = JSON.parse(json_array); var array_werte = [json_array, parseFloat((j.download.elapsed * 100 / j.download.bytes).toFixed(2)), parseFloat((j.upload.elapsed * 100 / j.upload.bytes).toFixed(2)), j.ping.latency, j.ping.low, j.ping.high, j.ping.jitter, parseFloat((j.download.bandwidth / 125000).toFixed(2)), parseFloat((j.upload.bandwidth / 125000).toFixed(2)), parseFloat((j.download.bandwidth / (1024 * 1024)).toFixed(2)), parseFloat((j.upload.bandwidth / (1024 * 1024)).toFixed(2)), j.download.bandwidth, j.upload.bandwidth, j.isp, j.interface.externalIp, j.result.url, j.result.id, j.server.id, j.server.ip, j.server.name, j.server.location, j.server.country, j.server.host, parseFloat((j.download.bytes / (1024 * 1024)).toFixed(2)), parseFloat((j.upload.bytes / (1024 * 1024)).toFixed(2)), j.download.bytes, j.upload.bytes, parseFloat((j.download.elapsed / 1000).toFixed(2)), parseFloat((j.upload.elapsed / 1000).toFixed(2)), hole_datum(), false, "Speedtest wird durchgeführt" ]; return array_werte; } function speedtest() { // temporäre Variable für das Array var tmp_json; // Kommando für den Speedtest setStatus("Speedtest wird durchgeführt"); var kommando = "/usr/bin/speedtest -f json --accept-license --accept-gdpr"; if (fav_server > 0) { kommando = kommando + " -s " + fav_server; log("Speedtest mit Server " + fav_server + " gestartet! Der Test dauert zwischen 10 - 20 Sekunden!"); } else { log("Speedtest gestartet! Der Test dauert zwischen 10 - 20 Sekunden!"); } exec(kommando, function (error, stdout) { if (error) { log('Speedtest konnte nicht ausgeführt werden! ' + error, 'error'); setState(datenpunkt + "Status", "Fehler", true); setStatus("Speedtest fehlerhaft"); return; } else { tmp_json = generiere_array(stdout); aktualisiere_datenpunkt(tmp_json); setStatus("Speedtest erfolgreich durchgeführt"); log('Speedtest durchgeführt. Ergebnisse: Download: ' + tmp_json[7] + ' MBits/s | Upload: ' + tmp_json[8] + ' MBits/s | Ping: ' + tmp_json[3] + 'ms'); } }); } function setStatus(text) { setState(datenpunkt + "Status", text, true); } function aktualisiere_datenpunkt(werte) { for (let i = 0; i < objekt.length; i++) { setState(datenpunkt + objekt[i], werte[i], true); } } // Erstelle die benötigten Datenpunkte function datenpunkte_erstellen() { for (var i = 0; i < objekt.length; i++) { createState(datenpunkt + objekt[i], "", ueberschreiben, { name: beschreibung[i], desc: beschreibung[i], type: typen[i], role: rolle[i], unit: einheiten[i] }); setStatus("Datenpunkte erfolgreich erstellt"); } // Alle Datenpunkte erstellt. Führe ersten Speedtest aus! log('Speedtest: Datenpunkte erstellt! Erster Speedtest wird in 30 Sekunden ausgeführt!'); setTimeout(speedtest, 30000); } // Datum function hole_datum() { let datum = new Date(); let tag = '0' + datum.getDate(); let monat = '0' + (datum.getMonth() + 1); let jahr = datum.getFullYear(); let stunde = '0' + datum.getHours(); let minute = '0' + datum.getMinutes(); let sekunde = '0' + datum.getSeconds(); return tag.substr(-2) + '.' + monat.substr(-2) + '.' + jahr + ' ' + stunde.substr(-2) + ':' + minute.substr(-2) + ':' + sekunde.substr(-2); } function speedtest_erster_start() { log("Speedtest: Erster Start des Skriptes! Datenpunkte werden erstellt!"); // Datenpunkte werden erstellt datenpunkte_erstellen(); } // Erster Start und Initialisierung speedtest_erster_start(); // Alle 60 Minuten einen Speedtest ausführen schedule('0,30 * * * *', speedtest); // Script ausführen wenn Datenpunkt "Speedtest-Trigger" = true on({ id: "javascript.0.Speedtest.Trigger", change: "any" }, function (obj) { if (obj.state.val===true) { speedtest (); } });
-
Moin,
bei mir funktioniert das Script aus welchem Grunde auch immer nicht - bin leider sonst kein Linux-Nutzer-
Anzeige im Javascript-Adapter:
error javascript.1 (10238) script.js.common.VIS_2024.Scripte_andere_Seiten.Speedtest: Speedtest konnte nicht ausgeführt werden! Error: Command failed: /usr/bin/speedtest -f json --accept-license --accept-gdpr /bin/sh: 1: /usr/bin/speedtest: not found
/etc/speedtest# type -p speedtest /usr/bin/speedtest
Gebe ich in der Konsole
/usr/bin/speedtest -f json --accept-license --accept-gdpr -s 28602
ein, funktioniert der Speedtest.Ich nutze Debian-Linux Bookworm und habe die automatische Installation genutzt:
sudo apt-get install curl curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash sudo apt-get install speedtest```
-
-
@thomas-braun said in Speedtest-Skript von kreyenborg.koeln für Kabel-Gigabit:
apt policy speedtest*
Folgendes:
root@VM-IoBroker:/etc/speedtest# sudo apt update OK:1 http://security.debian.org/debian-security bookworm-security InRelease OK:2 http://deb.debian.org/debian bookworm InRelease OK:3 http://deb.debian.org/debian bookworm-updates InRelease OK:4 https://deb.nodesource.com/node_18.x nodistro InRelease OK:5 https://packagecloud.io/ookla/speedtest-cli/debian bookworm InRelease Paketlisten werden gelesen… Fertig Abhängigkeitsbaum wird aufgebaut… Fertig Statusinformationen werden eingelesen… Fertig Alle Pakete sind aktuell. root@VM-IoBroker:/etc/speedtest# apt policy speedtest* speedtest: Installiert: 1.2.0.84-1.ea6b6773cf Installationskandidat: 1.2.0.84-1.ea6b6773cf Versionstabelle: *** 1.2.0.84-1.ea6b6773cf 500 500 https://packagecloud.io/ookla/speedtest-cli/debian bookworm/main amd64 Packages 100 /var/lib/dpkg/status speedtest-cli: Installiert: (keine) Installationskandidat: 2.1.3-2 Versionstabelle: 2.1.3-2 500 500 http://deb.debian.org/debian bookworm/main amd64 Packages
-
@patrickfro sagte in Speedtest-Skript von kreyenborg.koeln für Kabel-Gigabit:
root@
KEIN root-Login!
Meld dich als user an, verdammte Hacke... -
@thomas-braun Schande über mein Haupt. Ist ne neue Installation und der normale User hat noch keine sudo-Rechte. Daher der Weg. Aber nun wirds klar, root hat wohl kein usr-Verzeichnis.
-
@patrickfro sagte in Speedtest-Skript von kreyenborg.koeln für Kabel-Gigabit:
Ist ne neue Installation und der normale User hat noch keine sudo-Rechte.
Und das ist das erste und letzte, was man als root in einem neuen System tut. Bzw. man installiert sein Debian gleich von vorneherein OHNE root-Passwort.
Aber nun wirds klar, root hat wohl kein usr-Verzeichnis.
usr steht NICHT für user, wenn du das vermuten solltest sondern für UnixSystemRessources. Du meinst vermultich home-Verzeichnisse. Das vom root findet sich unter /root
-
ich habe es nun als root deinstalliert
sudo apt-get update sudo apt-get remove speedtest
meinem normalen user sudo gegeben, mich als normaler user angemeldet, neu installiert, selber Fehler wie oben.
patrick@VM-IoBroker:~$ sudo apt update OK:1 http://security.debian.org/debian-security bookworm-security InRelease OK:2 http://deb.debian.org/debian bookworm InRelease OK:3 http://deb.debian.org/debian bookworm-updates InRelease OK:4 https://deb.nodesource.com/node_18.x nodistro InRelease OK:5 https://packagecloud.io/ookla/speedtest-cli/debian bookworm InRelease Paketlisten werden gelesen… Fertig Abhängigkeitsbaum wird aufgebaut… Fertig Statusinformationen werden eingelesen… Fertig Alle Pakete sind aktuell. patrick@VM-IoBroker:~$ apt policy speedtest* speedtest: Installiert: 1.2.0.84-1.ea6b6773cf Installationskandidat: 1.2.0.84-1.ea6b6773cf Versionstabelle: *** 1.2.0.84-1.ea6b6773cf 500 500 https://packagecloud.io/ookla/speedtest-cli/debian bookworm/main amd 64 Packages 100 /var/lib/dpkg/status speedtest-cli: Installiert: (keine) Installationskandidat: 2.1.3-2 Versionstabelle: 2.1.3-2 500 500 http://deb.debian.org/debian bookworm/main amd64 Packages
Ich sehe in diesem Ergebnis leider auch keine Änderung. Du hast doch sicherlich noch eine Idee, oder?
-
sudo -u iobroker speedtest -f json --accept-license --accept-gdpr
-
patrick@VM-IoBroker:~$ sudo -u iobroker speedtest -f json --accept-license --accept-gdpr {"type":"result","timestamp":"2023-10-22T17:35:33Z","ping":{"jitter":0.318,"latency":1.630,"low":1.274,"high":1.954},"download":{"bandwidth":10028954,"bytes":55169840,"elapsed":5603,"latency":{"iqm":1.419,"low":0.692,"high":207.800,"jitter":18.722}},"upload":{"bandwidth":4651107,"bytes":16764520,"elapsed":3608,"latency":{"iqm":119.987,"low":0.858,"high":317.042,"jitter":40.296}},"packetLoss":0,"isp":"wilhelm.tel","interface":{"internalIp":"...7d8f:6950","name":"ens18","macAddr":"...AE","isVpn":false,"externalIp":"...4950"},"server":{"id":4087,"host":"speedtest.wtnet.de","port":8080,"name":"wilhelm.tel","location":"Norderstedt","country":"Germany","ip":"...3:2"},"result":{"id":"fea91c99-07ee-4ff1-ae4d-8cd14483123","url":"https://www.speedtest.net/result/c/fea91c99-07ee-4ff1-ae4d-8cd144333823","persisted":true}}
-
Hast du das Skript vollständig und richtig kopiert?
-
Eigentlich schon
patrick@VM-IoBroker:~$ sudo apt-get install curl [sudo] Passwort für patrick: Paketlisten werden gelesen… Fertig Abhängigkeitsbaum wird aufgebaut… Fertig Statusinformationen werden eingelesen… Fertig curl ist schon die neueste Version (7.88.1-10+deb12u4). 0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert. patrick@VM-IoBroker:~$ curl -s https://packagecloud.io/install/repositories/ookl a/speedtest-cli/script.deb.sh | sudo bash Detected operating system as debian/bookworm. Checking for curl... Detected curl... Checking for gpg... Detected gpg... Detected apt version as 2.6.1 Running apt-get update... done. Installing debian-archive-keyring which is needed for installing apt-transport-https on many Debian systems. Installing apt-transport-https... done. Installing /etc/apt/sources.list.d/ookla_speedtest-cli.list...done. Importing packagecloud gpg key... Packagecloud gpg key imported to /etc/apt/keyr ings/ookla_speedtest-cli-archive-keyring.gpg done. Running apt-get update... done. The repository is setup! You can now install packages. patrick@VM-IoBroker:~$ sudo apt-get install speedtest Paketlisten werden gelesen… Fertig Abhängigkeitsbaum wird aufgebaut… Fertig Statusinformationen werden eingelesen… Fertig Die folgenden NEUEN Pakete werden installiert: speedtest 0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert. Es müssen noch 0 B von 1.106 kB an Archiven heruntergeladen werden. Nach dieser Operation werden 2.628 kB Plattenplatz zusätzlich benutzt. Vormals nicht ausgewähltes Paket speedtest wird gewählt. (Lese Datenbank ... 167253 Dateien und Verzeichnisse sind derzeit installiert.) Vorbereitung zum Entpacken von .../speedtest_1.2.0.84-1.ea6b6773cf_amd64.deb ... Entpacken von speedtest (1.2.0.84-1.ea6b6773cf) ... speedtest (1.2.0.84-1.ea6b6773cf) wird eingerichtet ... Trigger für man-db (2.11.2-2) werden verarbeitet ...
Da ich kein Raspberry hab, konnte ich nicht das komplette Script von Kreyenborg nutzen, sondern musste auf https://www.speedtest.net/de/apps/cli ausweichen.
-
@patrickfro sagte in Speedtest-Skript von kreyenborg.koeln für Kabel-Gigabit:
Da ich kein Raspberry hab, konnte ich nicht das komplette Script von Kreyenborg nutzen, sondern musste auf https://www.speedtest.net/de/apps/cli ausweichen.
Heh? Versteh ich nicht.
Hast du das Skript kopiert, im javaskript-Adapter als Java-Skript angelegt und die erforderlichen Änderungen getätigt? -
genau, hab es gerade nochmal deinstalliert und so wie du im ersten Post installiert (ist ja selber Weg). Selbes Ergebnis:
javascript.1 (10238) script.js.common.VIS_2024.Scripte_andere_Seiten.Speedtest: Speedtest konnte nicht ausgeführt werden! Error: Command failed: /usr/bin/speedtest -f json --accept-license --accept-gdpr /bin/sh: 1: /usr/bin/speedtest: not found
-
@patrickfro Ähm... Ich glaube ich habs. Ich habe Master und Slave und wohl Javascript vom Slave genommen...
1000 Mal sorry, teste es mal
-
Eine Frage noch:
Das obere Bild ist das Ergebnis vom Speedtest über das Script, der untere ist direkt auf der Webseite durchgeführt. Uploadgeschwindigkeit passt ja halbwegs, aber Download so gar nicht. Ist auch bei weiteren Tests so unterschiedlich.
Linux ist auf Proxmox installiert und hängt an einem LAN-Kabel direkt an der Fritzbox. Wo ist hier die Bremse?