Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. exec befehl mit root Berechtigung (SONOSAPI)

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    311

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.5k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.4k

exec befehl mit root Berechtigung (SONOSAPI)

Geplant Angeheftet Gesperrt Verschoben Blockly
6 Beiträge 5 Kommentatoren 458 Aufrufe 5 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • XBiTX Offline
    XBiTX Offline
    XBiT
    schrieb am zuletzt editiert von
    #1

    Hallo,

    In letzter Zeit muss ich sehr oft die Sonos API über die Konsole neu starten damit meine Sonos Lautsprecher wie gewünscht die Radiosender etc. umschalten.

    Dazu muss ich per SSH den Befehl:

    sudo systemctl restart sonosapi.service
    

    eingeben.

    gern würde ich das über ein einfaches Blockly automatisieren jedoch benötige ich für den Befehl root Rechte bzw. das PW muss mit übergeben werden.
    Mit einen einfachen

    8db50890-89cb-465f-92bc-d0cbc4205e69-image.png

    geht es nicht (fehlt ja auch das root PW ohne sudo kommt zugriff verweigert).

    Wie könnte ich es lösen?

    Meister MopperM OliverIOO 2 Antworten Letzte Antwort
    0
    • XBiTX XBiT

      Hallo,

      In letzter Zeit muss ich sehr oft die Sonos API über die Konsole neu starten damit meine Sonos Lautsprecher wie gewünscht die Radiosender etc. umschalten.

      Dazu muss ich per SSH den Befehl:

      sudo systemctl restart sonosapi.service
      

      eingeben.

      gern würde ich das über ein einfaches Blockly automatisieren jedoch benötige ich für den Befehl root Rechte bzw. das PW muss mit übergeben werden.
      Mit einen einfachen

      8db50890-89cb-465f-92bc-d0cbc4205e69-image.png

      geht es nicht (fehlt ja auch das root PW ohne sudo kommt zugriff verweigert).

      Wie könnte ich es lösen?

      Meister MopperM Offline
      Meister MopperM Offline
      Meister Mopper
      schrieb am zuletzt editiert von
      #2

      @xbit sagte in exec befehl mit root Berechtigung (SONOSAPI):

      Wie könnte ich es lösen?

      Ein sauber installiertes Debian verlangt kein root-Passwort.

      Und auch bei Virtualsisierungssystemen ist die Anlage und Verwendung eines normalen Users mit sudo-Rechten immer die bessere Variante.

      Proxmox und HA

      XBiTX 1 Antwort Letzte Antwort
      0
      • Meister MopperM Meister Mopper

        @xbit sagte in exec befehl mit root Berechtigung (SONOSAPI):

        Wie könnte ich es lösen?

        Ein sauber installiertes Debian verlangt kein root-Passwort.

        Und auch bei Virtualsisierungssystemen ist die Anlage und Verwendung eines normalen Users mit sudo-Rechten immer die bessere Variante.

        XBiTX Offline
        XBiTX Offline
        XBiT
        schrieb am zuletzt editiert von XBiT
        #3

        @meister-mopper

        hilft mir jetzt nicht so viel weiter.. melde ich mich als Benutzer per SSH an welcher sudo Rechte hat (was ich immer mache) und gebe den Befehl "sudo systemctl restart sonosapi.service" wird immer erneut das PW vom User abgefragt.

        97699b61-0220-447e-99e9-bae6d84c04f9-image.png

        Thomas BraunT 1 Antwort Letzte Antwort
        0
        • XBiTX XBiT

          @meister-mopper

          hilft mir jetzt nicht so viel weiter.. melde ich mich als Benutzer per SSH an welcher sudo Rechte hat (was ich immer mache) und gebe den Befehl "sudo systemctl restart sonosapi.service" wird immer erneut das PW vom User abgefragt.

          97699b61-0220-447e-99e9-bae6d84c04f9-image.png

          Thomas BraunT Online
          Thomas BraunT Online
          Thomas Braun
          Most Active
          schrieb am zuletzt editiert von
          #4

          @xbit

          Dann ändere die Rechte für den Service so ab, das da auch ein normaler user Zugriff hat.
          Zum Beispiel über die Gruppe 'iobroker'.

          Linux-Werkzeugkasten:
          https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
          NodeJS Fixer Skript:
          https://forum.iobroker.net/topic/68035/iob-node-fix-skript
          iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

          1 Antwort Letzte Antwort
          0
          • XBiTX XBiT

            Hallo,

            In letzter Zeit muss ich sehr oft die Sonos API über die Konsole neu starten damit meine Sonos Lautsprecher wie gewünscht die Radiosender etc. umschalten.

            Dazu muss ich per SSH den Befehl:

            sudo systemctl restart sonosapi.service
            

            eingeben.

            gern würde ich das über ein einfaches Blockly automatisieren jedoch benötige ich für den Befehl root Rechte bzw. das PW muss mit übergeben werden.
            Mit einen einfachen

            8db50890-89cb-465f-92bc-d0cbc4205e69-image.png

            geht es nicht (fehlt ja auch das root PW ohne sudo kommt zugriff verweigert).

            Wie könnte ich es lösen?

            OliverIOO Offline
            OliverIOO Offline
            OliverIO
            schrieb am zuletzt editiert von
            #5

            @xbit

            Grundsätzlich sollte das Problem an der Wurzel gelöst werden, warum dieser Dienst neu gestartet werden muss. Dazu kannst du auch mal in die Logdateien des Dienstes reinschauen, ob dort Fehler oder Problem Hinweise stehen.

            Ein und ausschalten, oder virtuelles mit dem Fuß dagegen treten Ist wahrscheinlich nur eine temporäre Lösung.

            um dir dennoch zwischenzeitlich zu helfen, kannst du mal auf der folgenden Seite schauen.
            https://wiki.ubuntuusers.de/sudo/Konfiguration/
            Darüber kannst du die Passwort Eingabe für bestimmte User, für bestimmte Programme aufheben. Bitte lese dir die komplette Seite von oben bis unten durch und beachte insbesondere den roten Kasten.. Durch falsches bearbeiten kannst du dir dein System zerstören.

            Achte auch darauf, dass du die Berechtigung den User iobroker vergeben musst. Das ist der User der vom Blockly aus verwendet wird

            Meine Adapter und Widgets
            TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
            Links im Profil

            1 Antwort Letzte Antwort
            1
            • J Offline
              J Offline
              jwerlsdf
              schrieb am zuletzt editiert von jwerlsdf
              #6

              Hi,
              Ich hatte ein ähnliches Problem. Bei einem Neustart sollte ein Befehl an raspberry gesendet werden. Das PW sollte dabei mitgegeben werden. Mit blockly habe ich es nicht hinbekommen, mit Java gings.
              Das Skript macht folgendes. Es überprüft den Datenpunkt mpd info connect auf false. Ist dieser auf false, wird sich auf dem raspberry mit pw eingeloggt jnd der sudo Befehl abgewendet.

              Vielleicht hilft dir das Skript weiter. Habe dir noch einige Anmerkungen reingeschri3ben

              const { Client } = require('ssh2'); // Importiere die ssh2 Bibliothek
              
              // Konfiguration für den Raspberry Pi MPD (IP, Benutzername und Passwort)
              const raspberryMPDConfig = {
                host: '192.168.XXX.XX', // IP-Adresse von Raspberry Pi MPD
                port: 22,
                username: 'pi', // Benutzername auf Raspberry Pi MPD
                password: 'XXX' // Passwort für den Benutzer
              };
              
              let sshErrorLogged = false; // Flag, um Fehler nur einmal zu protokollieren
              
              // Funktion, die den Befehl an Raspberry Pi MPD sendet
              function sendCommandToRaspberryMPD() {
                const conn = new Client();
              
                // Verbindung zu Raspberry Pi MPD herstellen
                conn.on('ready', () => {
                  // Den Befehl "sudo service mpd start" ausführen
                  conn.exec('sudo service mpd start', (err, stream) => {
                    if (err) {
                      if (!sshErrorLogged) {
                        console.error('Fehler beim Ausführen des Befehls:', err); // Fehler nur einmal loggen
                        sshErrorLogged = true; // Fehler flag setzen
                      }
                      conn.end();
                      return;
                    }
              
                    stream.on('data', () => {
                      // Keine Ausgabe mehr aufzeichnen
                    });
              
                    stream.on('close', () => {
                      conn.end(); // Verbindung schließen
                    });
                  });
                }).on('error', () => {
                  if (!sshErrorLogged) {
                    console.error('Fehler bei der SSH-Verbindung.'); // Fehler nur einmal loggen
                    sshErrorLogged = true; // Fehler flag setzen
                  }
                }).connect(raspberryMPDConfig);
              }
              
              // Event-Listener für den Datenpunkt mpd.0.info.connection
              on({ id: 'mpd.0.info.connection', val: false }, async (obj) => {
                let value = obj.state.val;  // Der aktuelle Wert des Datenpunkts
                let oldValue = obj.oldState.val;  // Der vorherige Wert des Datenpunkts
              
                if (value === false) {
                  sendCommandToRaspberryMPD();
                } else {
                  sshErrorLogged = false; // Fehlerflag zurücksetzen, wenn der Wert nicht mehr false ist
                }
              });
              
              1 Antwort Letzte Antwort
              1
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              319

              Online

              32.5k

              Benutzer

              81.7k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe