[Gelöst] GenShellSwitch Can't exec "/home/pi/....

Begonnen von crazysky, 30 Juni 2019, 07:21:42

Vorheriges Thema - Nächstes Thema

crazysky

habe diese zwei Zeilen - siehe Screenshot - am Ende der Datei eingefügt.
Den Benutzer "home" habe ich zur Authentifizierung am Webinterface von fhem angelegt. ich wusste nicht unter welchem Benutzer fhem versucht die Kommandos auszuführen.

Otto123

ich hoffe mit visudo?
Ich meine zwischen NOPASSWD: und /home/pi/fernotron-control gehört ein Leerzeichen. Aber ich bin nicht sicher.

fhem arbeitet mit fhem wenn es als Nutzer fhem läuft :)

Gruß Otto
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

crazysky

#17
ja, mit visudo.

aber egal ob mit oder ohne leerzeichen, es bringt nix. im Protokoll steht nach wie vor:

2019.06.30 15:18:49 1: PERL WARNING: Can't exec "/home/pi/fernotron-control/FernotronRemote.sh": Datei oder Verzeichnis nicht gefunden at ./FHEM/00_GenShellSwitch.pm line 131.
2019.06.30 15:18:49 2: GenShellSwitch set Rolladen_Buero off


kann man den fhem user testweise mal mit su Berechtigungen ausstatten? wenn ja, wie geht das?

Otto123

Ja kann man. Aber wie gesagt, eigentlich macht es raspbian nicht so. Aber vielleicht hat sich auch was geändert.
Ich vermute da noch was anderes.
Ich habe das hier mal beschrieben, der Anfang entspricht dem was Du willst:
https://heinz-otto.blogspot.com/2017/01/per-ssh-remote-befehle-direkt-ausfuhren.html

Ansonsten kopierst Du die Datei /etc/sudoers.d/010_pi-nopasswd nochmal für fhem

Gruß Otto
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

crazysky

OK, probiere ich.
Wird diese kopierte Datei mit dem dann von dir vorgeschlagenem Namen automatisch wirksam?

MadMax-FHEM

Du musst den Inhalt schon an den User fhem anpassen...

Weil sonst hast du einfach nur 2 Dateien mit Einträgen für den User pi... ;)

EDIT: wirken sollte das sofort...

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

ja. Du musst natürlich den Namen der Datei und den Inhalt (user fhem) anpassen :)
Alle Dateien im /etc/sudoers.d/ werden includiert
Zitat# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d
Der # vor dem includedir ist kein "Auskommentieren" ;)
https://linux.die.net/man/5/sudoers

Edit: Joachim war schneller :)
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

Hi Otto,

hier ich...
...woanders du... ;)

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)

crazysky

#23
Ich schaffe es nicht. Ich denke, ich gebe auf. Ich habe die Datei in sudoers.d erstellt und wenn ich nun den Befehl direkt in die fhem kommandozeile eingebe kommt momentan gar nichts mehr im log.
Anfangs kam noch folgendes:
sudo: ./FernotronSend: Befehl nicht gefunden
Ohne dass ich weitere Änderungen oder so gemacht hätte, kam das dann auch nicht mehr. Es kommt einfach nichts im log wenn man
"sudo /home/pi/fernotron-control/FernotronSend 71111111633333314126333333124161433124312614331241415222431243152224312222633124333316331243312254143124331541431241226122414333161224143122"
eingibt.
:'( :'( :'(

Otto123

Das nichts im Log kommt sagt doch nicht das es nicht funktioniert?  ???
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

crazysky

achso . ok. aber der rolladen bewegt sich halt nicht  :'(

crazysky

wahhhh!   es geht! plötzlich geht es!
unbelievable!!!

Tausend Dank die Herren!!!!!!! 

Achso, äh, jetzt muss es ja auch ohne kommandozeile noch funktionieren...

wie muss da jetzt der befehl lauten?  oder was wäre als nächstes zu tun?

amenomade

#27
Wenn GenShellSwitch es unterstützt, dann soll in die DEF noch sudo vorne kommen.
DEF -> sudo /home/pi/fernotron-control/FernotronRemote.sh 2 2 u d

Wenn nicht, dann lieber ein offizielles Modul benutzen, wie z.B. hier beschrieben: https://forum.fhem.de/index.php/topic,59062.msg504871.html#msg504871

defmod Rolladen_Buero readingsProxy Rolladen_Buero
attr Rolladen_Buero setFn { fhem('"sudo /home/pi/fernotron-control/FernotronRemote.sh 2 2 '. ($CMD eq 'on' ?'u':'d') .'"') }
attr Rolladen_Buero setList on off


Damit kannst Du auch "stop" implementieren, z.B.:

defmod Rolladen_Buero readingsProxy Rolladen_Buero
attr Rolladen_Buero setFn { fhem('"sudo /home/pi/fernotron-control/FernotronRemote.sh 2 2 '. $CMD .'"') }
attr Rolladen_Buero setList u d s
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

crazysky

leider klappt das mit dem sudo voranstellen im DEF nicht. Folgendes kommt im log.

Wenn ich es so schreibe:
"sudo /home/pi/fernotron-control/FernotronRemote.sh" 2 2 u d
sh: 1: sudo /home/pi/fernotron-control/FernotronRemote.sh: not found
2019.07.01 08:19:59 2: GenShellSwitch set Rolladen_Buero off

Wenn ich es so schreibe:
"sudo /home/pi/fernotron-control/FernotronRemote.sh 2 2 u d"
sh: 1: Syntax error: Unterminated quoted string
2019.07.01 08:22:02 2: GenShellSwitch set Rolladen_Buero on

Wenn ich es so schreibe:
sudo /home/pi/fernotron-control/FernotronRemote.sh 2 2 u d
sudo: unable to execute /home/pi/fernotron-control/FernotronRemote.sh: No such file or directory
2019.07.01 08:22:54 2: GenShellSwitch set Rolladen_Buero on


Bei dem Vorschlag über readingsProxy  bekomme ich im log
sudo: unable to execute /home/pi/fernotron-control/FernotronRemote.sh: No such file or directory


Otto123

Moin,

Du handelst ja hier mit völlig unterschiedlichen Befehlen. Mir ist jetzt nicht klar was geht und was nicht.

Der Befehl aus #23 geht? der hieß ja sudo /home/pi/fernotron-control/FernotronSend

Das Shell Script /home/pi/fernotron-control/FernotronRemote.sh funktioniert auch nicht in der FHEM Kommandozeile mit "" eingerahmt?

Außerdem ist offenbar unklar wie der Syntax in den mir nicht bekannten Modulen lautet.
Wo ich mir jetzt beim Schreiben unsicher bin: Wenn man ein bash Script als sudo ausführen will, braucht man dann nicht auch sudo Recht für bash?

Das dünne Brett was Du jetzt bohren könntest wäre die Zeile in der sudoers.d/Datei so ändern wie sie für Pi in der parallelen Datei steht. Dann kann fhem wie Pi alles in Sudo.
Das müssen wir dann aber noch wieder ändern. Also nur als Schnelltest.

Gruß Otto
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