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?

    FB_IMG_1560420635257.jpg
    FB_IMG_1560420639421.jpg
    FB_IMG_1560420642902.jpg



  • @e-i-k-e

    kommt darauf an, wie iobroker installiert ist - oder auch ob das fixer.sh installiert wurde

    hatte auch problem - vielleicht hilft das weiter

    https://forum.iobroker.net/post/269945



  • @e-i-k-e

    bei mir wurde iobroker mit root installiert - exec() (iobroker) wurde aber wegen des fixer.sh scripts mit dem user iobroker ausgeführt - da meine befehle aber den root brauchten, funktionierte es nicht - aber es gab eine lösung dafür - siehe post vorher



  • 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.



  • @v522533

    weiß nicht was su -c macht - probiers mal und sag bescheid - evtl kurze anleitung /beispiel , falls funktioniert - können sicher andere auch gebrauchen



  • @v522533

    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



  • @liv-in-sky

    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



  • @v522533

    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



  • @liv-in-sky

    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? 😕

    1.JPG

    2.JPG

    3.JPG



  • @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

    Image 1.png

    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?



  • @e-i-k-e

    du könntest die pid vorher auslesen (exec) mit dem ergebnis (result) dann arbeiten - du kannst ja mit dem

    probier doch mal

    pgrep 
    

    Image 1.png

    dieses beispiel sucht nach der pid meines bash-scriptes (dlnafind)

    Image 3.png



  • @liv-in-sky

    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. ☺



Suggested Topics

1.0k
Online

32.4k
Users

39.0k
Topics

528.7k
Posts