Aufruf von Script unter /home/pi/433Utils/RPi_utils/

Begonnen von tklein, 25 Oktober 2021, 15:01:45

Vorheriges Thema - Nächstes Thema

Otto123

Zitat von: tklein am 25 Oktober 2021, 19:03:33
es ist kein shell script. sondern ein tool, um 433 MHz Daten zu senden.
Aber im Betreff steht doch "Aufruf von Script"  :o
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

MadMax-FHEM

Zitat von: Otto123 am 25 Oktober 2021, 20:18:22
Aber im Betreff steht doch "Aufruf von Script"  :o

Ist aber doch nicht wirklich relevant, oder?

Also ob Script oder Programm/Executable...

@tklein: unter de User pi hat es aber funktioniert? Kompiliert hast du auf dem PI wo es läuft/laufen soll? Pin2 passt auch?

Ich tippe ja (immer noch) auf: fhem darf kein sudo ohne PW...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

ich tippe auf fehlende Gruppenzugehörigkeit - wenns nur mit sudo geht ist es sowieso ins dünne Brett gebohrt. ;D
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

tklein

Zitat von: Wernieman am 25 Oktober 2021, 18:15:08
Du kannst externe Programme auch ohne Umwege über die perl-Ebene starten:
"/pfad/zu/meinem/tollen/Programm/programm.sh"
Also in "" setzen, dann wird nur keine Rückgabe ausgewertet, dafür dann aber auch nicht blockierend

wie kann ich mein neues shell script aus fhem heraus starten?

Script:
#!/bin/sh
cd /opt/fhem/FhemUtils

echo ausgabe text
./codesend 10101602


Rechte:
pi@raspberrypi-iob:/opt/fhem/FhemUtils $ pwd
/opt/fhem/FhemUtils
pi@raspberrypi-iob:/opt/fhem/FhemUtils $ ls -la
total 32
drwxr-xr-x  2 root root     4096 Oct 25 22:19 .
drwxr-xr-x 11 fhem dialout  4096 Oct 25 20:59 ..
-rwxrwxrwx  1 fhem dialout 20104 Oct 25 22:00 codesend
-rwxrwxrwx  1 fhem dialout    73 Oct 25 22:16 test.sh


Aufruf im Notify:

defmod Leinwand_notify_2 notify Leinwand:runter { system("opt/fhem/FhemUtils/test.sh &")}

Das klappt nicht.

In der Konsole kann ich das Script mit
bash test.sh erfolgreich ausführen
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

MadMax-FHEM

Zitat von: Otto123 am 25 Oktober 2021, 22:21:35
ich tippe auf fehlende Gruppenzugehörigkeit - wenns nur mit sudo geht ist es sowieso ins dünne Brett gebohrt. ;D

Oder so... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

#20
Warum rufst du das "Programm" per Shell-Script auf und nicht einfach direkt?

Ist für die Problematik irrelevant...

Wenn es auf der Console bist und es geht: als User pi!?
Ohne sudo?

Wenn du es von fhem aus aufrufst (egal welcher Weg), dann führt das der User fhem aus!

Solange der das "Programm" nicht ausführen kann/darf, kannst du noch so viele "Umwege" drumrum bauen: es wird nicht gehen...

In deibem notify Aufruf ust der Pfad falsch!
Du musst schon an der "Wurzel" '/' anfangen... ;)
Also:

/opt/fhem/FhemUtils/test.sh

Absonsten startest du bzw. der User fhem wo er eben gerade "steht" und versucht nach opt usw. zu kommen. Das wird nicht gehen ;)
Sollte aber einen Fehler im Log geben...

EDIT: war es nicht schon mal der Pfad /opt/fhem/FHEM/FhemUtils ? ;) Wo nun? ;)
EDIT: die Rechte die du zuletzt gepostet hast sind auch übertrieben unnötig. Daher hat User pi überhaupt die Chance es auszuführen. Das sollte eigentlich NICHT (einfach) gehen, weil das ist ja das Home-Verzeichnis von fhem. Da darf pi erst mal nix was viel... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

was macht denn codesend? Welche Rechte braucht das? Welche Gruppenzugehörigkeit ist notwendig? Welche Hardware wird damit gesteuert?

mit sudo -su fhem codesend ...kannst Du im terminal mit user fhem testen.
Vielleicht einfacher im Test wie das rumgebammel innerhalb von FHEM.

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

tklein

Zitat von: Otto123 am 25 Oktober 2021, 22:37:38
was macht denn codesend? Welche Rechte braucht das? Welche Gruppenzugehörigkeit ist notwendig? Welche Hardware wird damit gesteuert?

mit sudo -su fhem codesend ...kannst Du im terminal mit user fhem testen.
Vielleicht einfacher im Test wie das rumgebammel innerhalb von FHEM.

hier die Ausgabe. Da liegt der Hund begraben:
pi@raspberrypi-iob:~/433Utils/RPi_utils $ sudo -su fhem ./codesend 1234
wiringPiSetup: Unable to open /dev/mem or /dev/gpiomem: Permission denied.
  Aborting your program because if it can not access the GPIO
  hardware then it most certianly won't work
  Try running with sudo?
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

Otto123

#23
da lag ich doch mit meiner Vermutung richtig :)

packe user fhem in die Gruppe gpio, starte einmal neu (ich weiß nicht genau wann die neue Gruppe greift) und dann funktionieren die zahlreichen Vorschläge und Möglichkeiten ;) (Bevorzugt die Variante von Werner einfach als FHEM Command)
Beispiel
sudo usermod -aG gpio fhem
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

tklein

Zitat von: MadMax-FHEM am 25 Oktober 2021, 22:27:55
Warum rufst du das "Programm" per Shell-Script auf und nicht einfach direkt?

Ist für die Problematik irrelevant...
--> war ein Test/Idee von mir.

Wenn es auf der Console bist und es geht: als User pi!?
Ohne sudo?
--> Ja

Wenn du es von fhem aus aufrufst (egal welcher Weg), dann führt das der User fhem aus!
--> okay da hilft auch wohl kein sudo

Solange der das "Programm" nicht ausführen kann/darf, kannst du noch so viele "Umwege" drumrum bauen: es wird nicht gehen...

In deibem notify Aufruf ust der Pfad falsch!
Du musst schon an der "Wurzel" '/' anfangen... ;)
Also:

/opt/fhem/FhemUtils/test.sh

Absonsten startest du bzw. der User fhem wo er eben gerade "steht" und versucht nach opt usw. zu kommen. Das wird nicht gehen ;)
Sollte aber einen Fehler im Log geben...
--> steht leider immer nur
2021.10.26 09:34:51 3 : Leinwand_notify_2 return value: -1
2021-10-26 09:34:51 dummy Leinwand runter

[/b]

EDIT: war es nicht schon mal der Pfad /opt/fhem/FHEM/FhemUtils ? ;) Wo nun? ;)  --> /opt/fhem/FhemUtils
EDIT: die Rechte die du zuletzt gepostet hast sind auch übertrieben unnötig. Daher hat User pi überhaupt die Chance es auszuführen. Das sollte eigentlich NICHT (einfach) gehen, weil das ist ja das Home-Verzeichnis von fhem. Da darf pi erst mal nix was viel... ;)
--> Danke für die Erklärung

Gruß, Joachim
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

MadMax-FHEM

Zitat
Wenn du es von fhem aus aufrufst (egal welcher Weg), dann führt das der User fhem aus!
--> okay da hilft auch wohl kein sudo

Naja: helfen würde es schon ;)

Aber der Weg von Otto ist besser (der richtige Weg): https://forum.fhem.de/index.php/topic,123658.msg1182360.html#msg1182360

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Wernieman

Und noch eine Kleinigkeit:
Wenn eine Datei Beginnt mit einer Zeile #!, wie hier z.B. #!/bin/bash, brauchst Du den Interpreter nicht nochmals anzugeben.

Also ./test.sh reicht und nicht "bash ./test.sh"
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

tklein

Zitat von: Wernieman am 26 Oktober 2021, 14:21:53
Und noch eine Kleinigkeit:
Wenn eine Datei Beginnt mit einer Zeile #!, wie hier z.B. #!/bin/bash, brauchst Du den Interpreter nicht nochmals anzugeben.

Also ./test.sh reicht und nicht "bash ./test.sh"

besten dank für die Erklärung!
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2