NEWS
ioBroker und exec an Raspbian "kill -SIGSTOP"
-
Hallo zusammen,
ich möchte den Befehl "kill -SIGCONT 941 && kill -SIGCONT 709" und "kill -SIGSTOP 941 && kill -SIGSTOP 709" über den Javascript Adapter an ein Raspberry senden. Leider werden diese nicht ausgeführt, obwohl es direkt über SSH funktonirt.
Die anderen verbauten Befehle werden ohne Probleme über diesen Weg ausgeführt.
Kann es an den "user: iobroker" (Rechteproblem) liegen?
-
kommt darauf an, wie iobroker installiert ist - oder auch ob das fixer.sh installiert wurde
hatte auch problem - vielleicht hilft das weiter
-
-
vielen Dank @liv-in-sky !
Iobroker wurde damals als root installiert, den fixer habe ich in der Vergangenheit ausführen müssen.
Habe ich es richtig verstanden, dass ich einfach nur "sudo -u root" vor meinem Befehl eintragen muss?
-
@e-i-k-e nee - nicht ganz
du must den befehl sozusagen freigeben - unter /etc/sudoers.d muss ein eintrag dazu gemacht werden
unter https://forum.iobroker.net/post/270742 - habe ich es noch kurz beschrieben
-
kann mann nicht einfach su -c vor den befehl schreiben. sollte doch eigentlich auch funktionieren, oder? vorrausgesetzt man hat einen private key zur vermeidung der passwort eingabe eingerichtet.
-
weiß nicht was su -c macht - probiers mal und sag bescheid - evtl kurze anleitung /beispiel , falls funktioniert - können sicher andere auch gebrauchen
-
zur sicherheit wollte ich es erwähnen (nehme an du weißt das eh)- bei meinem link geht es nur um den punkt zu a
der rest ist für dein thema unwichtig
-
kurz zusammen gefasst: su -c führt einen einzelnen befehl eines users mit root rechten aus.
würde dann so aussehen:su -c "ssh user@ip sudo reboot"
ich konnte es selber noch nicht testen, bin bei der arbeit. werde ich aber heute abend mal versuchen und berichten.
ich möchte den monitor von meinem magic mirror per aqara wlan switch an und ausschalten
-
am gerät ist immer besser
aber sieh dir heute abend mal das file iobroker in diesem verzeichnis an - dann wird es schnell klar
nur zum verständnis: dein befehl geht über ssh zu sich selbst und benötigt dann den private key -dein blockly oben benutzt ja kein ssh ! - sondern du sendest es an den iobroker server selbst mit dem exec blockly
wenn du aber auf ein anderes gerät zugreifen willst würde auch sshpass funktionieren - ohne zertifikat mit passwort (unsicher)/usr/bin/sshpass -p 'xxxx' ssh -oStrictHostKeyChecking=no root@192.168.178.10 'systemctl start shutdownschlafen'
eigentlich sollte der ssh befehl lokal auch ohne sudo funktionieren (also mit dem iobroker user , der braucht doch kein root) - da brauchsrt du ja nur die rechte auf dem anderen gerät
-
nur kurz klarstellung: ich bin nicht der thread ersteller, habe mich nur eingeklinkt, weil ich ähnliches vorhabe...
ich habe vor den monitor von meinem magic mirror mit einem aqara wlanswitch an- und auszuschalten. dafür muss ich von meinem iobroker (rock64) auf meinem pi mit magic mirror per exec einen befehl ausführen.
ich habe mir nur gedacht dass meine lösung vielleicht auch dem te helfen könnte, sofern sie denn funktioniert
-
@v522533 sorry - verzeih meine verwirrtheit
dann ist ja eh alles klar
die lösung wäre auf jeden fall interessant
-
Wenn ich heute Abend die Zeit dazu finde, werde ich beide Varianten testen.
Berichte euch. -
Also mit su -c funktioniert es nicht.
Mit der Version von @liv-in-sky haut es noch nicht richtig hin. Wo liegt mein Fehler?
-
@e-i-k-e wenn du im exec-blockly das "mit ereignis" auswählst und eine variable erstellst - mit dem namen result - kanns t du besser debuggen - im log steht dann die antwort
ich sehe jetzt auf anhieb keinen fehler
existiert die pid (die kann sich auch ändern)
-
Werde ich testen.
Die PID existieren.Schade des es noch nicht funktioniert.
-
@e-i-k-e das wird schon noch
der eintrag für das sudoers file:
iobroker ALL=(ALL) NOPASSWD: /bin/kill
sollte so aussehen - sorry mein fehler-
versuch es damit mal
-
Guten Morgen,
vielen Dank!
Leider werden die Befehle weiterhin nicht ausgeführt.
Scheint doch zu funktionieren!
Diesmal hat sich die PID geändert. Gibt es eine alternative zum PID? -
du könntest die pid vorher auslesen (exec) mit dem ergebnis (result) dann arbeiten - du kannst ja mit dem
probier doch mal
pgrep
dieses beispiel sucht nach der pid meines bash-scriptes (dlnafind)
-
Vielen Dank!
Ich habe nun folgenden (für mich einfachere) Lösung.- sudo -u root pkill -SIGSTOP "name des prozesses"
- sudo -u root pkill -SIGCONT "name des prozesses"
Funktioniert bestens.