Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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

  • wichtiges UPDATE fĂŒr controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    2.7k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    4.8k

  • Neuer ioBroker-Blog online: MonatsrĂŒckblick MĂ€rz/April 2026
    BluefoxB
    Bluefox
    8
    1
    4.0k

Apple TV steuern - exec Befehl ohne Funktion

Geplant Angeheftet Gesperrt Verschoben JavaScript
34 BeitrÀge 5 Kommentatoren 4.8k Aufrufe 7 Beobachtet
  • Ä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.
  • 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 Offline
      apollon77A Offline
      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 Offline
          apollon77A Offline
          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 Offline
                    apollon77A Offline
                    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

                      Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                      Hast du es satt, bei jedem Besuch durch die gleichen BeitrĂ€ge zu scrollen? Wenn du dich fĂŒr ein Konto anmeldest, kommst du immer genau dorthin zurĂŒck, wo du zuvor warst, und kannst dich ĂŒber neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und BeitrĂ€ge positiv bewerten, um anderen Community-Mitgliedern deine WertschĂ€tzung zu zeigen.

                      Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                      Registrieren Anmelden
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      375

                      Online

                      33.0k

                      Benutzer

                      83.4k

                      Themen

                      1.3m

                      BeitrÀge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2026
                      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