Vielleicht kann mir jemand sagen was ich falsch mache,
Versuche in FHEM (Weboberfläche) mit dem Befehl in der Kommandozeile ein Shell Script aufzurufen welches dann ein MP3 File abspielen soll
Befehl den ich in der Kommandozeile eintrage:
{system("sh /opt/fhem/mp3/abspielen.sh")}
Als Rückmeldung kommt einfach -1 ???
Wenn ich in der Raspberry-Konsole folgenden Befehl eingebe funktioniert des einwandfrei und das MP3 File wird abgespielt
sh /opt/fhem/mp3/abspielen.sh
Habe schon einiges versucht aber es klappt irgendwie nicht.
In diesem Forum habe ich z.B. folgenden Hinweis gefunden
Die Datei sudoers anpassen
sudo nano /etc/sudoers
Am Ende der Datei habe ich folgenden Anweisung hinzugefügt:
fhem ALL=(ALL) NOPASSWD: ALL
Aber auch das hat nicht geholfen.....
Vielleicht weiß jemand was die Ursache sein könnte.
Vielen Dank
Versuch mal
system("/opt/fhem/mp3/abspielen.sh &")
Danke für den Versuch:
Habe jetzt folgenden Anweisung versucht:
{system("/opt/fhem/mp3/abspielen.sh &")}
Ändert aber nichts am Verhalten--> geht nicht und die Meldung -1 kommt erneut
Vielelicht hat jemand noch ein Idee?
Tippe mal auf Berechtigungsproblem
ok des könnte sein.
Hast noch eine Tip was ich hier genau anpassen sollte ?
wie sehen denn die Rechte der Shell Abspielen.sh aus?
Ich habe eine Hardcopy aus FTP gemacht
Des mit den Rechten sollte eigentlich passen?
Gesendet von iPhone mit Tapatalk
Mal mit einem Sudo vor dem Befehl versucht. Hast ja fhem die Sudo Rechte gegeben, laut deiner Aussage oben.
Nach meinen Versuchen funktioniert der sudo Befehl auch nicht mehr aus der Konsole des Raspberry. Damit kann der sudo Befehl wahrscheinlich auch nicht in fhem funktionieren.
Es kommt folgende Meldung in der Konsole:
(http://images.tapatalk-cdn.com/15/12/06/a22cc9f7d99d9b4908f4b185d63f7725.jpg)
Könntest du mal posten wie die richtige Vergabe zur Anpassung der Rechte sein sollte?
Ich habe folgendes versucht:
1) Schreib -Leserechte --
chmod -R 777 /opt/fhem/mp3 (da liegt auch das Shell Script)
2) Shell Datei ausführbar gemacht
Chmod +x /opt/fhem/mp3/abspielen.sh
Wie gesagt Aus der Rpi Konsole geht das Script, auch ohne sudo....
Gibt es evtl. eine Beschreibung was ich tun muss um ein Script aus fhem aufrufen zu können?
Vielen Dank
Gesendet von iPhone mit Tapatalk
Bitte mal hier nachlesen:
http://www.perlhowto.com/executing_external_commands
LG
pah
Zitat von: mj2680 am 07 Dezember 2015, 05:39:08
Es kommt folgende Meldung in der Konsole:
(http://images.tapatalk-cdn.com/15/12/06/a22cc9f7d99d9b4908f4b185d63f7725.jpg)
Wenn sudo mit dieser Meldung kommt ist schon etwas ziemlich durcheinander.
Solche Dinge sollten repariert werden, denn root-Zugriff ist in vielen Fällen notwendig um updates einzuspielen / GPIOs zu nutzen etc.
Was hat denn zu diesem Verhalten geführt, hast Du die sudo-Datei selbst verändert?
Gibt es noch mehr "komische" Meldungen?
Ich habe versucht die sudoers Datei mit zusätzlichen Einträgen anzupassen.
Da habe ich irgendwie was falsch gemacht.
Der Rest funktioniert aber einwandfrei. Wenn dann muesste ich das System neu installieren.
Koennte ich schon machen würde aber gerne vorab verstehen wie ich die Rechte / User richtig anpassen muss um eine Shell Datei in fhem auszuführen.
Vielen Dank für deine Info
Gesendet von meinem SM-G920F mit Tapatalk
Zitat von: Prof. Dr. Peter Henning am 07 Dezember 2015, 07:47:43
Bitte mal hier nachlesen:
http://www.perlhowto.com/executing_external_commands
LG
pah
Danke für den Input.
Habe versucht des zu verstehen was Sie mir gesendet haben, liest sich aber nicht ganz einfach.
Haetten Sie da noch etwas konkretere Infos?
Gesendet von meinem SM-G920F mit Tapatalk
Zitat von: Jak am 07 Dezember 2015, 09:48:40
verstehen wie ich die Rechte / User richtig anpassen muss um eine Shell Datei in fhem auszuführen
Um ein shell script aus fhem heraus auszuführen sind generell erstmal keine zusätzlichen Rechte nötig. Wenn das shell script zusätzliche Rechte benötigt, dann kann man:
- fhem user in Unixgruppen aufnehmen, die die Rechte haben
- setuid auf Dateiebene verwenden
- das shell script mit sudo aufrufen
siehe:
man addgroup
https://de.wikipedia.org/wiki/Setuid
https://de.wikipedia.org/wiki/Sudo
Vor allem: Eine Rückgabe von "-1" aus dem system() ist vollkommen ok.
Statt system("command") besser `command` verwenden.
LG
pah