NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@liv-in-sky Ja genau, das meinte ich. @Negalein hat mir schon geholfen, die Tabelle und die Steuerelemente nach links zu rücken. Geändert habe ich nur die Datenpunkte, die bei mir alle in 0_userdata liegen. Das hat (erstaunlich) gut funktioniert. Auch von mir nochmal Danke für das Script.
-
Ich bin es leid, das ich immer Problem mit den Rechten bekomme.
Nun meine Bitte:
Ich möchte alles neu aufsetzten und beschreibe den Weg den ich gehe. Sollte hier schon ein Fehler bestehen, bitte ich um Hilfe.
Also, ich nehme 3 Pi 4 mit 4gb RAM, 125gb SSD-Platte sowie einen Fujitsu E920 als Anzeige. Als Bildschirm ein 24“ Touch-Screen angeschlossen am Fujitsu.
Alle Pi’s sind so eingestellt das sie von SSD und nicht von einer Micro-SD Karte booten.
1 Pi als Master, die beiden anderen als Slave.
Auf allen Pi’s wird Raspbian aufgespielt mit dem „User“ pi und natürlich einem neuen Password.
Frage 1: der User „pi“ ist doch nicht automatisch „Root“ oder?
Auf allen wird auch „SSH“ freigegeben und „update“ und „upgrade“ ausgeführt.
Mit Putty wird auf allen 3 Pi’s ioBroker installiert und zwar mit folgenden Befehl:curl -sL https://iobroker.net/install.sh | bash -
Auf dem „Master“ wird Multihost freigegeben und auf den „Slaves“ über „connect“ verbunden!
Bei der Installation von Adaptern in ioBroker habe ich bisher keine Probleme gehabt, darum weiter mit der Wetterstation.
Nach der Installationsanleitung auf github habe ich alles gemacht aber keinen Erfolg.Bei „./wetterstation.sh –debug“ bekomme ich folgende Fehlermeldung:
-bash: ./wetterstation.sh: /bin/bash^M: Defekter Interpreter: Datei oder Verzeichnis nicht gefunden
Bei „sudo systemctl status wetterstation“:
pi@pi-iobroker:/home/iobroker $ sudo systemctl status wetterstation ● wetterstation.service - Service für ioBroker Wetterstation Loaded: loaded (/etc/systemd/system/wetterstation.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Tue 2021-10-05 11:04:52 CEST; 7s ago Process: 14097 ExecStart=/home/iobroker/wetterstation.sh (code=exited, status=203/EXEC) Main PID: 14097 (code=exited, status=203/EXEC) Okt 05 11:04:52 pi-iobroker systemd[1]: Started Service für ioBroker Wetterstation. Okt 05 11:04:52 pi-iobroker systemd[14097]: wetterstation.service: Failed to execute command: No such file or directory Okt 05 11:04:52 pi-iobroker systemd[14097]: wetterstation.service: Failed at step EXEC spawning /home/iobroker/wetterstation.sh: No such file or directory Okt 05 11:04:52 pi-iobroker systemd[1]: wetterstation.service: Main process exited, code=exited, status=203/EXEC Okt 05 11:04:52 pi-iobroker systemd[1]: wetterstation.service: Failed with result 'exit-code'.
Bei „ls -la“ kommt
pi@pi-iobroker:/home/iobroker $ ls -la insgesamt 128 drwxr-xr-x 4 iobroker iobroker 4096 Okt 5 09:44 . drwxr-xr-x 4 root root 4096 Okt 4 16:56 .. -rw-r--r-- 1 iobroker iobroker 220 Apr 18 2019 .bash_logout -rw-r--r-- 1 iobroker iobroker 3523 Mai 7 16:42 .bashrc drwx------ 3 iobroker iobroker 4096 Okt 5 07:45 .config drwxr-xr-x 4 iobroker iobroker 4096 Okt 5 09:56 .npm -rw-r--r-- 1 iobroker iobroker 807 Apr 18 2019 .profile -rw-r--r-- 1 iobroker iobroker 5738 Okt 5 07:49 wetterstation.conf -rwxr-xr-x 1 iobroker iobroker 14766 Okt 5 07:42 wetterstation.sh -rw-r--r-- 1 iobroker iobroker 63070 Okt 5 07:42 wetterstation.sub -rwxr-xr-x 1 iobroker iobroker 8421 Okt 4 17:11 ws_updater.sh
Was bekomme ich da nicht richtig hin?
MfG
Wastl -
Frage 1: der User „pi“ ist doch nicht automatisch „Root“ oder?
Nein, aber der user 'pi' (mit der UserID / uid) 1000 ist als sudoer voreingestellt, der dann per vorangesetztem 'sudo' für den nachfolgenden Befehl die root-Rechte erlangen kann.
Bei „./wetterstation.sh –debug“ bekomme ich folgende Fehlermeldung:
-bash: ./wetterstation.sh: /bin/bash^M: Defekter Interpreter: Datei oder Verzeichnis nicht gefundenDazu musst du im Verzechnis stehen, in dem auch das skript wetterstation ausführbar liegt. Offenbar stehst du nicht im richtigen Verzeichnis oder der user hat keine ausreichenden Rechte an dem skript.
Ich würde den user pi der Gruppe iobroker hinzufügen:
sudo usermod -aG iobroker pi
Danach den pi einmal ausloggen und wieder anmelden.
-
@thomas-braun sagte in [Linux Shell-Skript] WLAN-Wetterstation:
„./wetterstation.sh –debug
Ich stehe im Verzeichnis
pi@pi-iobroker:/home/iobroker $ dir wetterstation.conf wetterstation.sh wetterstation.sub ws_updater.sh pi@pi-iobroker:/home/iobroker $ ./wetterstation.sh –debug -bash: ./wetterstation.sh: /bin/bash^M: Defekter Interpreter: Datei oder Verzeichnis nicht gefunden pi@pi-iobroker:/home/iobroker $
Also die Reihenfolge der Installation ist somit nicht falsch?
MfG
Wastl -
@langer mach mal anstatt "dir" "ls -la"
file wetterstation.sh
und dann
dos2unix wetterstation.*
könnte vielleicht helfen. Ist aber nur eine Vermutung.
-
Wie sehen die Rechte aus?
ls -la /home/iobroker/wetterstation.sh
bzw.
getfacl /home/iobroker/wetterstation.sh
Und wie sehen die ersten paar Zeilen des skriptes aus?
-
@thomas-braun sagte in [Linux Shell-Skript] WLAN-Wetterstation:
getfacl /home/iobroker/wetterstation.sh
pi@pi-iobroker:/home/iobroker $ ls -la insgesamt 128 drwxr-xr-x 4 iobroker iobroker 4096 Okt 5 09:44 . drwxr-xr-x 4 root root 4096 Okt 4 16:56 .. -rw-r--r-- 1 iobroker iobroker 220 Apr 18 2019 .bash_logout -rw-r--r-- 1 iobroker iobroker 3523 Mai 7 16:42 .bashrc drwx------ 3 iobroker iobroker 4096 Okt 5 07:45 .config drwxr-xr-x 4 iobroker iobroker 4096 Okt 5 09:56 .npm -rw-r--r-- 1 iobroker iobroker 807 Apr 18 2019 .profile -rw-r--r-- 1 iobroker iobroker 5738 Okt 5 07:49 wetterstation.conf -rwxr-xr-x 1 iobroker iobroker 14766 Okt 5 07:42 wetterstation.sh -rw-r--r-- 1 iobroker iobroker 63070 Okt 5 07:42 wetterstation.sub -rwxr-xr-x 1 iobroker iobroker 8421 Okt 4 17:11 ws_updater.sh pi@pi-iobroker:/home/iobroker $ file wetterstation.sh wetterstation.sh: Bourne-Again shell script, UTF-8 Unicode text executable, with CRLF line terminators pi@pi-iobroker:/home/iobroker $ dos2unix wetterstation.* -bash: dos2unix: Kommando nicht gefunden. pi@pi-iobroker:/home/iobroker $ ls -la /home/iobroker/wetterstation.sh -rwxr-xr-x 1 iobroker iobroker 14766 Okt 5 07:42 /home/iobroker/wetterstation.sh pi@pi-iobroker:/home/iobroker $ getfacl /home/iobroker/wetterstation.sh getfacl: Entferne führende '/' von absoluten Pfadnamen # file: home/iobroker/wetterstation.sh # owner: iobroker # group: iobroker user::rwx group::r-x other::r-x Skript SH_VER="V2.9.0" CONF_V="V2.8.0" SUBVER="V2.9.0" #Installationsverzeichnis feststellen DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" #Config-Version prüfen VER_CONFIG=$(cat "${DIR}/wetterstation.conf"|grep '### Setting'|cut -d" " -f3) if [ $CONF_V != $VER_CONFIG ]; then echo -e "wetterstation: \e[31mERROR #000 - Config-Version mismatch!\n" echo -e "benutzt: $VER_CONFIG\t benötigt wird: $CONF_V$WE" exit 1 fi #Sub-Version prüfen SUB_CONFIG=$(cat "${DIR}/wetterstation.sub"|grep '### Subroutinen'|cut -d" " -f3) if [ $SUBVER != $SUB_CONFIG ]; then echo -e "wetterstation: \e[31mERROR #001 - Subroutinen-Version mismatch!\n" echo -e "benutzt: $SUB_CONFIG\t benötigt wird: $SUBVER$WE" exit 1 fi
MfG
Wastl -
@langer sagte in [Linux Shell-Skript] WLAN-Wetterstation:
UTF-8 Unicode text executable, with CRLF line terminators
Das sollte auf Unix-Format umgestellt werden. Die Zeilensprünge sind zwischen Windows und Unix unterschiedlich.
Und bitte nochmal genau in die erste Zeile des skripts schauen, für gewöhnlich ist da die sog. shebang aufgeführt.
#! /bin/bash
sollte da drin wohl stehen.
-
-
@langer Das ist wohl den meisten schon mal passiert. Du hast die Datei wahrscheinlich mal mit einem Windows-Editor zumindest betrachtet (oder editiert) und dann gespeichert.
Das geht natürlich auch unter Windows, nur sollte man dann den passenden Editor nutzen. Ich nehme gerne den Notepad++
Der belässt die Datei im Ursprungsformat (Linux mit LF) bzw. kann sie mit Bordmitteln auch wieder gerade rücken
-
@langer sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Nach dos2unix funktioniert alles!!!!!
1000 mal Danke..
MfG
WastlFreut mich. Habe nicht daran gedacht, dass man dos2unix nachinstallieren muss. Aber damit funktioniert es meistens.
-
Mal ein "kleineres" Update unter der Haube
Ich habe versucht so ziemlich alles nachzustellen und zu berücksichtigen, aber ich kann halt nicht alle Linux-Distris berücksichtigen (nutze aber nur Standards, sollte also mit jeder funktionieren). Es kann also durchaus noch haken und irgendwann habe ich auch leicht den Überblick verloren was ich schon getestet habe oder ev. vergessen habe.
So unscheinbar es auch aussieht, war es, gerade wegen der ganzen Testerei, doch ein klein wenig Arbeit...Ab sofort kann man über den WS-Updater installieren, updaten, Service einrichten und die Konfiguration patchen.
Bitte jetzt nicht einfach downloaden und probieren, dass wird nicht so richtig funktionieren. Muss jetzt aber erst mal kurz wech...I'm back...
Für zukünftige und die aktuelle V2.9.0 gibt es nun im "latest" immer eine WLAN-Wetterstation.zip :
https://github.com/SBorg2014/WLAN-Wetterstation/releases/latest
Diese beinhaltet alles was man braucht, aber ohne die ganzen Sourcen (die man aber trotzdem noch herunter laden kann).
Wenn dann alles funktioniert werde ich auch dementsprechend die WiKi anpassen, aber die alte Installation funktioniert weiter und wird auch zukünftig weiter funktionieren, ebenso wie Updates.Einzige Prämisse: automatische Updates müssen per URL angestoßen werden. Ich kann schlecht ein aktiv laufendes Skript gleichzeitig durch eine neue Version ersetzen ("der sich selbst abschleppende Abschleppwagen"). Unter Linux geht das zwar meistens, aber garantiert ist das nicht, also IMO kein gangbarer Weg.
Ich habe explizit darauf verzichtet die URL zu schrinken, da ich kein Freund davon bin wenn man einen Link anklicken soll und nicht sofort dessen Ziel erkennen kann
Ausführung immer im [zukünftigen] Verzeichnis des WLAN-Wetterstation Skriptes!
Update :
bash <(curl -s https://raw.githubusercontent.com/SBorg2014/WLAN-Wetterstation/master/ws_updater.sh)
Sollte bei bereits installierter V2.9.0 nur liefern (andernfalls wird das Update angeboten):
Hilfe:
bash <(curl -s https://raw.githubusercontent.com/SBorg2014/WLAN-Wetterstation/master/ws_updater.sh) -h
oder wenn bereits gedownloaded./ws_updater.sh -h
(Die Parameter dürften selbsterklärend sein)
Geplant ist noch ein neuer Datenpunkt der dann auf ein neues Update hinweist.
Falls wer eine Test-VM oä. hat, wäre gerade die Neuinstallation interessant. Zumindest auf meiner PiHole-VM lief es durch. Dazu ein Verzeichnis anlegen wo es hin soll, dann im Verzeichnis:bash <(curl -s https://raw.githubusercontent.com/SBorg2014/WLAN-Wetterstation/master/ws_updater.sh) --install
...und wie immer bei allem: das tut nicht als User root Not!
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Falls wer eine Test-VM oä. hat, wäre gerade die Neuinstallation interessant
hab ich (Ubuntu 20.04)
Zwar mit root gemacht (weil ich als Linuxlaie auf die Schnelle nicht gefunden hab, wie man richtig einen User anlegt und in Gruppen zuweist).
Fehler zeigt es mir an.
root@Webserver:~/wetter# bash <(curl -s https://raw.githubusercontent.com/SBorg2014/WLAN-Wetterstation/master/ws_updater.sh) --install ┌───────────────────────┐ │ │ │ WS-Updater V2.9.0 │ │ │ └───────────────────────┘ 'bc' installiert: [✗] 'jq' installiert: [✗] Möchten Sie WLAN-Wetterstation im aktuellen Verzeichnis installieren? [J/N]: J Hole Daten von GitHub... /dev/fd/63: line 308: jq: command not found Aktuelle Version: /dev/fd/63: line 310: jq: command not found Lade Datei von GitHub herunter... curl: no URL specified! curl: try 'curl --help' or 'curl --manual' for more information Entpacke Dateien... /dev/fd/63: line 314: unzip: command not found Lösche Dateidownload... rm: cannot remove 'tmp.zip': No such file or directory Dateien ausführbar setzen... chmod: cannot access 'ws_updater.sh': No such file or directory chmod: cannot access 'wetterstation.sh': No such file or directory Soll WLAN-Wetterstation nun als Service eingerichtet werden? [J/N]: Jsudo: setrlimit(RLIMIT_CORE): Operation not permitted sudo: setrlimit(RLIMIT_CORE): Operation not permitted Aktiviere den Service nun... sudo: setrlimit(RLIMIT_CORE): Operation not permitted sudo: setrlimit(RLIMIT_CORE): Operation not permitted Created symlink /etc/systemd/system/multi-user.target.wants/wetterstation.service -> /etc/systemd/system/wetterstation.service. Konfiguration nun öffnen? [J/N]: Jcat: /root/.selected_editor: No such file or directory /dev/fd/63: line 327: wetterstation.conf: command not found Nun mittels des Javascriptes 'wetterstation.js' die Datenpunkte im ioBroker anlegen! Fertig [ Nein=Abbruch ]? [J/N]: J/dev/fd/63: line 335: jn_abfrage\n\e[1;37m Einmaligen Testdurchlauf im Debug-Modus starten...(empfiehlt sich)?: command not found /dev/fd/63: line 336: ./wetterstation.sh: No such file or directory /dev/fd/63: line 339: jn_abfrage\n\e[1;37m WLAN-Wetterstation Service nun starten?: command not found sudo: setrlimit(RLIMIT_CORE): Operation not permitted Fertig... Wenn der Testlauf ausgeführt wurde und erfolgreich verlief, sollten nun aktuelle Daten der Wetterstation in den Datenpunkten stehen ;-)
-
@negalein Danke für das testen, damit hatte ich aber nicht gerechnet
Fällt dir bei 'bc' und 'jq' etwas auf?Teste es dann bitte jetzt noch einmal, er sollte nun abbrechen --> dann 'bc' installieren
nochmal versuchen --> jetzt müsste er beim 'jq' abbrechen --> installieren --> nun sollte es lüppenMit 'root' habe ich halt volle Rechte auf deinem System (unabhängig ob du es lokal oder per URL startest).
Sollte also bspw. mein Acc bei GitHub gehackt werden und der baut was weiß ich ein, kann er als 'root' dir 10 Waschmaschinen bestellen... (https://wiki.ubuntuusers.de/adduser/) -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Fällt dir bei 'bc' und 'jq' etwas auf?
bc
jqaber noch Fehler
root@Webserver:~/wetter# bash <(curl -s https://raw.githubusercontent.com/SBorg2014/WLAN-Wetterstation/master/ws_updater.sh) --install ┌───────────────────────┐ │ │ │ WS-Updater V2.9.0 │ │ │ └───────────────────────┘ 'bc' installiert: [✗] Bitte zuerst 'bc' installieren [sudo apt install bc] root@Webserver:~/wetter# sudo apt install bc sudo: setrlimit(RLIMIT_CORE): Operation not permitted Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: bc 0 upgraded, 1 newly installed, 0 to remove and 151 not upgraded. Need to get 86.3 kB of archives. After this operation, 231 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu focal/main amd64 bc amd64 1.07.1-2build1 [86.3 kB] Fetched 86.3 kB in 0s (175 kB/s) Selecting previously unselected package bc. (Reading database ... 17495 files and directories currently installed.) Preparing to unpack .../bc_1.07.1-2build1_amd64.deb ... Unpacking bc (1.07.1-2build1) ... Setting up bc (1.07.1-2build1) ... Processing triggers for install-info (6.7.0.dfsg.2-5) ... Processing triggers for man-db (2.9.1-1) ... root@Webserver:~/wetter# bash <(curl -s https://raw.githubusercontent.com/SBorg2014/WLAN-Wetterstation/master/ws_updater.sh) --install ┌───────────────────────┐ │ │ │ WS-Updater V2.9.0 │ │ │ └───────────────────────┘ 'bc' installiert: [✓] 'jq' installiert: [✗] Bitte zuerst 'jq' installieren [sudo apt install jq] root@Webserver:~/wetter# sudo apt install jq sudo: setrlimit(RLIMIT_CORE): Operation not permitted Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: libjq1 libonig5 The following NEW packages will be installed: jq libjq1 libonig5 0 upgraded, 3 newly installed, 0 to remove and 151 not upgraded. Need to get 313 kB of archives. After this operation, 1062 kB of additional disk space will be used. Do you want to continue? [Y/n] Y Get:1 http://archive.ubuntu.com/ubuntu focal/universe amd64 libonig5 amd64 6.9.4-1 [142 kB] Get:2 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 libjq1 amd64 1.6-1ubuntu0.20.04.1 [121 kB] Get:3 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 jq amd64 1.6-1ubuntu0.20.04.1 [50.2 kB] Fetched 313 kB in 0s (885 kB/s) Selecting previously unselected package libonig5:amd64. (Reading database ... 17512 files and directories currently installed.) Preparing to unpack .../libonig5_6.9.4-1_amd64.deb ... Unpacking libonig5:amd64 (6.9.4-1) ... Selecting previously unselected package libjq1:amd64. Preparing to unpack .../libjq1_1.6-1ubuntu0.20.04.1_amd64.deb ... Unpacking libjq1:amd64 (1.6-1ubuntu0.20.04.1) ... Selecting previously unselected package jq. Preparing to unpack .../jq_1.6-1ubuntu0.20.04.1_amd64.deb ... Unpacking jq (1.6-1ubuntu0.20.04.1) ... Setting up libonig5:amd64 (6.9.4-1) ... Setting up libjq1:amd64 (1.6-1ubuntu0.20.04.1) ... Setting up jq (1.6-1ubuntu0.20.04.1) ... Processing triggers for man-db (2.9.1-1) ... Processing triggers for libc-bin (2.31-0ubuntu9) ... root@Webserver:~/wetter# bash <(curl -s https://raw.githubusercontent.com/SBorg2014/WLAN-Wetterstation/master/ws_updater.sh) --install ┌───────────────────────┐ │ │ │ WS-Updater V2.9.0 │ │ │ └───────────────────────┘ 'bc' installiert: [✓] 'jq' installiert: [✓] Möchten Sie WLAN-Wetterstation im aktuellen Verzeichnis installieren? [J/N]: J Hole Daten von GitHub... Aktuelle Version: V2.9.0 vom 25.08.2021 Lade Datei von GitHub herunter... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 630 100 630 0 0 2316 0 --:--:-- --:--:-- --:--:-- 2316 100 35355 100 35355 0 0 64871 0 --:--:-- --:--:-- --:--:-- 663k Entpacke Dateien... /dev/fd/63: line 318: unzip: command not found Lösche Dateidownload... Dateien ausführbar setzen... chmod: cannot access 'ws_updater.sh': No such file or directory chmod: cannot access 'wetterstation.sh': No such file or directory Soll WLAN-Wetterstation nun als Service eingerichtet werden? [J/N]: J Wetterstation-Service existiert bereits! Konfiguration nun öffnen? [J/N]: Jcat: /root/.selected_editor: No such file or directory /dev/fd/63: line 331: wetterstation.conf: command not found Nun mittels des Javascriptes 'wetterstation.js' die Datenpunkte im ioBroker anlegen! Fertig [ Nein=Abbruch ]? [J/N]: J/dev/fd/63: line 339: jn_abfrage\n\e[1;37m Einmaligen Testdurchlauf im Debug-Modus starten...(empfiehlt sich)?: command not found /dev/fd/63: line 340: ./wetterstation.sh: No such file or directory /dev/fd/63: line 343: jn_abfrage\n\e[1;37m WLAN-Wetterstation Service nun starten?: command not found sudo: setrlimit(RLIMIT_CORE): Operation not permitted Fertig... Wenn der Testlauf ausgeführt wurde und erfolgreich verlief, sollten nun aktuelle Daten der Wetterstation in den Datenpunkten stehen ;-)
-
@negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
/dev/fd/63: line 318: unzip: command not found
Ok, da muss ich noch prüfen ob 'unzip' installiert ist, aber nu erst mal zu Abend spachteln gehen
Dachte eigentlich zumindest dass wäre standardmäßig installiert. -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
aber nu erst mal zu Abend spachteln gehen
Mahlzeit
-
@negalein Danke, Rest vom Mittagessen
...new version Online...bin aber für Heute raus, läute jetzt den Fernsehabend ein
-
@sborg nu, bei mich sagts:
bascht das so? -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
..new version Online
weiter gehts auf der Test-VM
Ich komme bis hier
Mit
J
bestätigtDann kommt das
und steht bis dann irgendwann das kommt (vermutlich, weil ich wegen obigem Fehler nicht in die Konfig komme