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. JavaScript
  5. Apple TV steuern - exec Befehl ohne Funktion

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.4k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    966

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Apple TV steuern - exec Befehl ohne Funktion

Geplant Angeheftet Gesperrt Verschoben JavaScript
34 Beiträge 5 Kommentatoren 3.9k Aufrufe 7 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.
  • iPhilBlnI iPhilBln

    @liv-in-sky meinst du jetzt indem ich den absoluten Pfad verwende oder wie sollte man es umgehen?

    liv-in-skyL Offline
    liv-in-skyL Offline
    liv-in-sky
    schrieb am zuletzt editiert von
    #18

    @iphilbln ja genau

    nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

    iPhilBlnI 1 Antwort Letzte Antwort
    0
    • liv-in-skyL liv-in-sky

      @iphilbln ja genau

      iPhilBlnI Offline
      iPhilBlnI Offline
      iPhilBln
      schrieb am zuletzt editiert von
      #19

      @liv-in-sky würde ich halt gerne vermeiden und einen Weg finden das auch mit alias verwenden zu können.
      Aber im Notfall geb ich dir recht, könnte man es halt mit dem absoluten Pfad implementieren.

      liv-in-skyL 1 Antwort Letzte Antwort
      0
      • iPhilBlnI iPhilBln

        @liv-in-sky würde ich halt gerne vermeiden und einen Weg finden das auch mit alias verwenden zu können.
        Aber im Notfall geb ich dir recht, könnte man es halt mit dem absoluten Pfad implementieren.

        liv-in-skyL Offline
        liv-in-skyL Offline
        liv-in-sky
        schrieb am zuletzt editiert von
        #20

        @iphilbln dann frage mal bei @AlCalzone, @apollon77 oder @foxriver76 - vielleicht wissen die entwickler des js-controllers einen trick dafür, wie man mit dem exec befehl ein alias des linux systems nutzen kann

        wenn von den 3en das keiner weiß, ....

        nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

        iPhilBlnI apollon77A 2 Antworten Letzte Antwort
        0
        • liv-in-skyL liv-in-sky

          @iphilbln dann frage mal bei @AlCalzone, @apollon77 oder @foxriver76 - vielleicht wissen die entwickler des js-controllers einen trick dafür, wie man mit dem exec befehl ein alias des linux systems nutzen kann

          wenn von den 3en das keiner weiß, ....

          iPhilBlnI Offline
          iPhilBlnI Offline
          iPhilBln
          schrieb am zuletzt editiert von
          #21

          @liv-in-sky naja bevor ich die jetzt verrückt mache, teste ich das erstmal mit dem child_process. Das sieht nach dem aus, was ich brauche. Aber kann es wenn erst nach Feierabend oder wahrscheinlich morgen austesten. Werde aber natürlich berichten ob es das ist was ich suche und umsetzen konnte.

          1 Antwort Letzte Antwort
          0
          • liv-in-skyL liv-in-sky

            @iphilbln dann frage mal bei @AlCalzone, @apollon77 oder @foxriver76 - vielleicht wissen die entwickler des js-controllers einen trick dafür, wie man mit dem exec befehl ein alias des linux systems nutzen kann

            wenn von den 3en das keiner weiß, ....

            apollon77A Online
            apollon77A Online
            apollon77
            schrieb am zuletzt editiert von
            #22

            @liv-in-sky Wo steht denn der alias? in der bash.rc oder sowas? Dann ist der Grund ja klar ... node.js führt das kommando direkt aus ... da ist keine Shell ...

            Also nimm den absoluten befehl und dein problem ist weg.

            Wenn der alias sein muss fällt mir nur ein zu versuchen ne shell im exec zu starten die dann ggf den alias kennt? Also sowas wie "/usr/sbin/bash -c aliasname" (also Pfad natürlich anpassen und die shell und so ... ob das tut .. null ahnung. Auf jeden Fall ist das starten der Shell am Ende ein overhead ...

            Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

            • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
            • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
            1 Antwort Letzte Antwort
            1
            • iPhilBlnI iPhilBln

              @liv-in-sky also ich bin jetzt schon ein Stück weiter gekommen. Probleme macht der Kurzbefehl zum Aufruf des Skripts. Was in der Konsole mit dem user iobroker klappt funktioniert so nicht mittels execute.
              Hier mal ein Beispiel aus der Konsole:
              Bildschirmfoto 2022-08-14 um 22.04.11.png
              Hier in Blockly, wo das Ergebnis leer bleibt:
              Bildschirmfoto 2022-08-14 um 22.04.41.png

              Wenn ich das Skript direkt in exec anspreche, wird das Skript auch ausgeführt und das Apple TV führt das Kommando durch.
              Hier noch kurze Infos wo das Skript liegt und den Rechten.
              Bildschirmfoto 2022-08-14 um 22.22.42.png
              Bildschirmfoto 2022-08-14 um 22.33.33.png

              Die Frage ist jetzt, wie man mithilfe von exec den Kurzbefehel atvscript ausführen kann bzw wo der gespeichert ist?

              Vielleicht ist das noch hilfreich: In meine .bashrc Datei musste ich auch erst den Pfad exportieren

              # add pyatv path to bash
              export PATH="/home/iobroker/.local/bin:$PATH"
              
              iPhilBlnI Offline
              iPhilBlnI Offline
              iPhilBln
              schrieb am zuletzt editiert von
              #23

              @apollon77

              Vielleicht ist das noch hilfreich: In meine .bashrc Datei musste ich auch erst den Pfad exportieren

              # add pyatv path to bash
              export PATH="/home/iobroker/.local/bin:$PATH"
              

              In der .bashrc ist nur der Pfad zu den installierten Python Module zum PATH hinzugefügt. Danach lässt sich das über den Modulnamen ausführen.

              $ which bash
              $ /bin/bash
              

              /bin/bash -c atvscript scan liefert dann aber leider auch kein result mit exec.

              apollon77A 1 Antwort Letzte Antwort
              0
              • iPhilBlnI iPhilBln

                @apollon77

                Vielleicht ist das noch hilfreich: In meine .bashrc Datei musste ich auch erst den Pfad exportieren

                # add pyatv path to bash
                export PATH="/home/iobroker/.local/bin:$PATH"
                

                In der .bashrc ist nur der Pfad zu den installierten Python Module zum PATH hinzugefügt. Danach lässt sich das über den Modulnamen ausführen.

                $ which bash
                $ /bin/bash
                

                /bin/bash -c atvscript scan liefert dann aber leider auch kein result mit exec.

                apollon77A Online
                apollon77A Online
                apollon77
                schrieb am zuletzt editiert von
                #24

                @iphilbln Dann bin ich als "Nicht so linux shell experte" raus ... am Ende gelten Aliase nur im Scope der entsprechenden Shell.

                Aber ist es denn jeztzt überhaupt ein Alias wenn Du schreibst "nur Pfad hinzufügen dann ists direkt möglich"?

                @AlCalzone noch ne idee wie man den Pfad hier "iobroker verträglich" manipuliert?

                Aber ich würde die Frage nochmal aufgreifen: Warum denn überhaupt? Sicherheitstechnisch und aus anderen Gründen ists viel besser wenn es absolut aus dem Skript zugegriffen wird

                Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                iPhilBlnI 1 Antwort Letzte Antwort
                0
                • apollon77A apollon77

                  @iphilbln Dann bin ich als "Nicht so linux shell experte" raus ... am Ende gelten Aliase nur im Scope der entsprechenden Shell.

                  Aber ist es denn jeztzt überhaupt ein Alias wenn Du schreibst "nur Pfad hinzufügen dann ists direkt möglich"?

                  @AlCalzone noch ne idee wie man den Pfad hier "iobroker verträglich" manipuliert?

                  Aber ich würde die Frage nochmal aufgreifen: Warum denn überhaupt? Sicherheitstechnisch und aus anderen Gründen ists viel besser wenn es absolut aus dem Skript zugegriffen wird

                  iPhilBlnI Offline
                  iPhilBlnI Offline
                  iPhilBln
                  schrieb am zuletzt editiert von iPhilBln
                  #25

                  @apollon77 mein Gedanken war folgender:

                  angenommen man zieht sein System um, aus welchen Gründen auch immer, und Python ist nicht mehr die Version 3.9. Dann würde der absolute Pfad kein Ergebnis mehr liefern weil das Modul jetzt unter …/python3.10/site-packages/… liegt oder meinetwegen lädt man sich das Modul einfach von GitHub runter und es liegt ganz woanders. Daher war meine Idee es über den Alias, sofern man das überhaupt so nennt bei Python Modulen, auszuführen. Allerdings müsste das ja dann auch anders in PATH in die bashrc eingetragen werden wenn es nur von GitHub geklont wird.

                  Ich denke ich werde das jetzt grundsätzlich anders umsetzen. Im ersten Schritt wird mit exec „ find / -name atvremote.py 2>/dev/null“ der absolute Pfad ermittelt und dann über dan absoluten Pfad das Skript ausführen.

                  apollon77A 1 Antwort Letzte Antwort
                  0
                  • iPhilBlnI iPhilBln

                    @apollon77 mein Gedanken war folgender:

                    angenommen man zieht sein System um, aus welchen Gründen auch immer, und Python ist nicht mehr die Version 3.9. Dann würde der absolute Pfad kein Ergebnis mehr liefern weil das Modul jetzt unter …/python3.10/site-packages/… liegt oder meinetwegen lädt man sich das Modul einfach von GitHub runter und es liegt ganz woanders. Daher war meine Idee es über den Alias, sofern man das überhaupt so nennt bei Python Modulen, auszuführen. Allerdings müsste das ja dann auch anders in PATH in die bashrc eingetragen werden wenn es nur von GitHub geklont wird.

                    Ich denke ich werde das jetzt grundsätzlich anders umsetzen. Im ersten Schritt wird mit exec „ find / -name atvremote.py 2>/dev/null“ der absolute Pfad ermittelt und dann über dan absoluten Pfad das Skript ausführen.

                    apollon77A Online
                    apollon77A Online
                    apollon77
                    schrieb am zuletzt editiert von
                    #26

                    @iphilbln Ja verstehe ich ... Der Find ist aber schon einiges an i/o was du dann bei jedem Call machst ... ob das soooo sinnig ist?
                    Vllt ein Shell script irgendwo hin legen welches du ausführst? Das könnte den Pfad "vor dem Call" adden und damit vllt gehen?

                    Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                    • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                    • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                    iPhilBlnI 1 Antwort Letzte Antwort
                    0
                    • apollon77A apollon77

                      @iphilbln Ja verstehe ich ... Der Find ist aber schon einiges an i/o was du dann bei jedem Call machst ... ob das soooo sinnig ist?
                      Vllt ein Shell script irgendwo hin legen welches du ausführst? Das könnte den Pfad "vor dem Call" adden und damit vllt gehen?

                      iPhilBlnI Offline
                      iPhilBlnI Offline
                      iPhilBln
                      schrieb am zuletzt editiert von
                      #27

                      @apollon77 hatte ich mir auch schon drüber Gedanken gemacht aber wäre dann ja auch wieder ein extraschritt der zu Fehlern führen könnte. Daher würde ich das denke ich eher in die Richtung lösen dass man ein Objekt Attribut hinzufügt in dem der absolut Pfad gespeichert ist und nur verglichen wird ob das Skript noch dort liegt ohne jedes Mal das gesamte fs durchsuchen zu müssen. Vielleicht noch ein Parameter für die Methode dass bei Start des Skripts erstmal nach einem Update das Pfads sucht. So könnte man schon mal den io wesentlich minimieren.

                      apollon77A 1 Antwort Letzte Antwort
                      0
                      • iPhilBlnI iPhilBln

                        @apollon77 hatte ich mir auch schon drüber Gedanken gemacht aber wäre dann ja auch wieder ein extraschritt der zu Fehlern führen könnte. Daher würde ich das denke ich eher in die Richtung lösen dass man ein Objekt Attribut hinzufügt in dem der absolut Pfad gespeichert ist und nur verglichen wird ob das Skript noch dort liegt ohne jedes Mal das gesamte fs durchsuchen zu müssen. Vielleicht noch ein Parameter für die Methode dass bei Start des Skripts erstmal nach einem Update das Pfads sucht. So könnte man schon mal den io wesentlich minimieren.

                        apollon77A Online
                        apollon77A Online
                        apollon77
                        schrieb am zuletzt editiert von
                        #28

                        @iphilbln Du meinst im Blockly? Hm ... Es ist aktuell seit Jahren das erste mal das so etwas ein Thema kist und generell ist "suchen nach einem Skript" nie generisch umsetzbar ... sorry, sehe ich nicht als Sinnvolles Feature an. Vor allem aus Sicherheitsgesichtspunkten. Wer weiss was die suche findet.

                        Nicht umsonst ruft man auch unter Linux am besten alles mit absoluten Pfaden auf ;-) Weil keiner Wer wer dir im Pfad oder sonst wo irgendwas untergeschoben hat

                        Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                        • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                        • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                        iPhilBlnI 2 Antworten Letzte Antwort
                        0
                        • apollon77A apollon77

                          @iphilbln Du meinst im Blockly? Hm ... Es ist aktuell seit Jahren das erste mal das so etwas ein Thema kist und generell ist "suchen nach einem Skript" nie generisch umsetzbar ... sorry, sehe ich nicht als Sinnvolles Feature an. Vor allem aus Sicherheitsgesichtspunkten. Wer weiss was die suche findet.

                          Nicht umsonst ruft man auch unter Linux am besten alles mit absoluten Pfaden auf ;-) Weil keiner Wer wer dir im Pfad oder sonst wo irgendwas untergeschoben hat

                          iPhilBlnI Offline
                          iPhilBlnI Offline
                          iPhilBln
                          schrieb am zuletzt editiert von iPhilBln
                          #29

                          @apollon77 nein nicht im blockly. Schreibe mir ein JS Skript wobei es meine ersten Gehversuche mit JS sind. Hatte in der Uni bisher nur Kontakt mit C, Python und Java.

                          1 Antwort Letzte Antwort
                          0
                          • apollon77A apollon77

                            @iphilbln Du meinst im Blockly? Hm ... Es ist aktuell seit Jahren das erste mal das so etwas ein Thema kist und generell ist "suchen nach einem Skript" nie generisch umsetzbar ... sorry, sehe ich nicht als Sinnvolles Feature an. Vor allem aus Sicherheitsgesichtspunkten. Wer weiss was die suche findet.

                            Nicht umsonst ruft man auch unter Linux am besten alles mit absoluten Pfaden auf ;-) Weil keiner Wer wer dir im Pfad oder sonst wo irgendwas untergeschoben hat

                            iPhilBlnI Offline
                            iPhilBlnI Offline
                            iPhilBln
                            schrieb am zuletzt editiert von
                            #30

                            @apollon77 man könnte die suche halt noch auf die Python Module eingrenzen und nicht das ganze fs danach durchsuchen. Das würde denke ich auch noch Sinn ergeben.

                            1 Antwort Letzte Antwort
                            0
                            • AlCalzoneA Offline
                              AlCalzoneA Offline
                              AlCalzone
                              Developer
                              schrieb am zuletzt editiert von
                              #31

                              Wäre der "saubere" weg dann nicht ein Symlink zur jeweils aktuellen Version und diesen dann per absolutem Pfad ausführen?
                              Wenn schon per find, dann würde ich das maximal zu Skriptbeginn machen.

                              Oder (auch nicht super schön) source /home/iobroker/.bashrc && eigentliches-kommando ausführen. Bei mehreren dann halt verkettet.

                              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                              1 Antwort Letzte Antwort
                              1
                              • iPhilBlnI Offline
                                iPhilBlnI Offline
                                iPhilBln
                                schrieb am zuletzt editiert von iPhilBln
                                #32

                                @alcalzone der Symlink müsste doch aber auch zuvor händisch erstellt werden bzw. man müsste wissen wo das Skript im FS gespeichert ist?

                                Mein Ansatz sah jetzt so aus, dass per find in den Python Modulen nach der neusten Version geschaut wird und dass Ergebnis dann als absoluter Pfad als Objekattribut gespeichert wird. Allerdings muss ich zugeben, dass ich mich aktuell noch nicht so wirklich mit der asynchronen Abarbeitung des exec-Befehls zurecht finde. Entweder liefert es nur undefined wie hier:
                                Bildschirmfoto 2022-08-17 um 20.06.41.png

                                Oder ich kann im Block von exec gar nicht erst auf das Attribut zugreifen:
                                GitHub Link -> Zeile 47 auskommentiert
                                zeile47.png

                                GitHub Link -> Zeile 59 auskommentiert
                                zeile59.png

                                @apollon77
                                Vielleicht könnte mir einer von euch beiden erklären, wieso ich in dem exec-Block nicht auf das Attribut zugreifen kann?

                                apollon77A 1 Antwort Letzte Antwort
                                0
                                • iPhilBlnI iPhilBln

                                  @alcalzone der Symlink müsste doch aber auch zuvor händisch erstellt werden bzw. man müsste wissen wo das Skript im FS gespeichert ist?

                                  Mein Ansatz sah jetzt so aus, dass per find in den Python Modulen nach der neusten Version geschaut wird und dass Ergebnis dann als absoluter Pfad als Objekattribut gespeichert wird. Allerdings muss ich zugeben, dass ich mich aktuell noch nicht so wirklich mit der asynchronen Abarbeitung des exec-Befehls zurecht finde. Entweder liefert es nur undefined wie hier:
                                  Bildschirmfoto 2022-08-17 um 20.06.41.png

                                  Oder ich kann im Block von exec gar nicht erst auf das Attribut zugreifen:
                                  GitHub Link -> Zeile 47 auskommentiert
                                  zeile47.png

                                  GitHub Link -> Zeile 59 auskommentiert
                                  zeile59.png

                                  @apollon77
                                  Vielleicht könnte mir einer von euch beiden erklären, wieso ich in dem exec-Block nicht auf das Attribut zugreifen kann?

                                  apollon77A Online
                                  apollon77A Online
                                  apollon77
                                  schrieb am zuletzt editiert von
                                  #33

                                  @iphilbln Ja das geht nicht wegen https://github.com/iPhilBln/ioBroker/blob/dev/functions/apple_tv/controlATV.js#L44

                                  ersetze

                                        exec(cmd, async function (error, result, stderr) {
                                  

                                  durch

                                        exec(cmd, async (error, result, stderr) => {
                                  

                                  in einer "function" wird this auf die function gemappt.

                                  Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                                  • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                                  • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                                  iPhilBlnI 1 Antwort Letzte Antwort
                                  1
                                  • apollon77A apollon77

                                    @iphilbln Ja das geht nicht wegen https://github.com/iPhilBln/ioBroker/blob/dev/functions/apple_tv/controlATV.js#L44

                                    ersetze

                                          exec(cmd, async function (error, result, stderr) {
                                    

                                    durch

                                          exec(cmd, async (error, result, stderr) => {
                                    

                                    in einer "function" wird this auf die function gemappt.

                                    iPhilBlnI Offline
                                    iPhilBlnI Offline
                                    iPhilBln
                                    schrieb am zuletzt editiert von iPhilBln
                                    #34

                                    @apollon77 super vielen Dank. Hat funktioniert. 👍
                                    Ich teste heute Nachmittag noch etwas und schließe dann ggf das Thema als gelöst.

                                    1 Antwort Letzte Antwort
                                    0
                                    Antworten
                                    • In einem neuen Thema antworten
                                    Anmelden zum Antworten
                                    • Älteste zuerst
                                    • Neuste zuerst
                                    • Meiste Stimmen


                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    746

                                    Online

                                    32.6k

                                    Benutzer

                                    82.2k

                                    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