Script per Remote starten

  • Hallo ich versuche gerade per RemoteControll mit einere Taste einen aufruf zu einer WEbseite zu machen

    dazu hätte ich folgendes:

    keymaps\gen.xml

    Code
    <[definition='3','0']keymap[/definition]>
    <global>
    <keyboard>
    <key id="61496">system.exec("/storage/scripts/togglepower.sh")</key>


    chmod 755 /storage/scripts/togglepower.sh
    und der inhalt wäre

    Bash
    #!/bin/sh
    $(curl 'http://10.0.0.94?cmd=test')

    Sobald ich nun die Taste drücke merke das etwas gemacht wird beim ersten mal drücken ist der ton weg, beim zweiten mal kommt der ton wieder und danach hängt KODI.

    und die webseite wird auch nicht aufgerufen ... hat wer einen Tipp?

  • Ich würde mir zuerst ein Test-Script schreiben, welches mir z. B. die aktuelle Datum/Uhrzeit in eine Datei schreibt. Einfach nur um zu wissen, dass das Script ausgeführt wurde, wenn ich eine Taste drücke

    Also sowas hier:

    Bash
    #!/bin/sh
    date > test.txt


    Da steht dann aktuelles Datum und ein Zeitstempel in der Datei "test.txt" im gleichen Ordner in dem auch das Script liegt

    Da dort "storage" mit im Pfad steht, gehe ich mal davon aus, dass du entweder LibreELEC oder CoreELEC verwendet?

    Wenn das klappt, ist das schon mal die halbe Miete ;)

    Jetzt musst du uns an einer anderen Stelle abholen...

    Was soll denn passieren, wenn du die angegebene IP aufrufst? Was läuft da, was da cmd=test interpretieren soll? Wir brauchen da mehr Infos, wenn wir dir helfen sollen. ;)

    Funktioniert das (dein) Script, wenn du es von der Kommandozeile aus aufrufst?

    Weiter wundere ich mich ein wenig über die IP. Ich meine...klar...man kann sich ein 10.0.0.0/24 Netz bauen. Ich sehe immer nur den Sinn darin nicht es so kompliziert zu machen ;).

    diese $(...) um das "curl"-Kommando kannst du dir auch sparen. Du brauchst keine Command-Substitution in dem Fall. Das bräuchtest du nur, wenn du die Ausgabe des Kommandos in einer Variablen speichern möchtest. Also, wenn du z. B. das Verzeichnis in dem du dich gerade befindest, als String in einer Variablen ablegen möchtest:


    Bash
    pfad=$(pwd)
    
    
    echo "$pfad"

    Solange du nichts in einer Variablen speichern möchtest, kannst du die $(....) weg lassen.

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

    Einmal editiert, zuletzt von DaVu (1. März 2022 um 01:31)

  • Du kannst mal probieren:

    Code
    <key id="61496">System.Exec("/bin/sh -c /storage/scripts/togglepower.sh")</key>


    Laut Kodi Wiki, wird zwar die Shell aufgerufen, im Quelltext von Kodi sehe ich das allerdings nicht, und es wird lediglich das Kommando *direkt* aufgerufen, das System.Exec übergeben wird. Das wird bei Shell Skripts so nicht funktionieren. (Oder ich interpretiere den Quelltext auf Anhieb nicht korrekt). Je nach dem was du rauskriegst, wäre es zumindest ein Fehler in der Doku. Wobei ich selbst ein "echtes" System-Kommando, das so funktioniert wie die Doku logischer fände. (Es gibt aber auch Security-Aspekte rund um beliebige Shell-Kommandos - oder auch andere von außen steuerbare Kommandos).

    Was ich nicht verstehe, dass auch noch eine "PostMsg(TMSG_MINIMIZE)" aufgerufen wird, vor dem Kommando durch das System.

    Hängen sollte Kodi nicht, auch bei falschem Kommando. Auf Anhieb sehe ich jetzt auch nicht, dass [definition=12,8]Logging[/definition] helfen würde, da ich keine Log-Befehle im Quelltext sehe (jedenfalls nicht nahe der Kommando-Ausführung, weiter oben im Interpreter möglicherweise schon). Und bei der Idee von @DaVu mit date. Evt. willst du noch ein Größer-Zeichen mehr spendieren: date >> test.txt (weil scheinbar der erste und er zweite Tastendruck anders reagierten laut deine Beschreibung, dann siehst du, wie viele/wann die Tastendrücke ankamen).

    Auf welchem System läuft Kodi?

    Kodi 21.0, 17.6, 20.5, 16, 20.5 on Windows 11 Pro, Android 6, Android 12, FireTV Box 2nd Gen, FireTV 4k Max 2nd Gen
    Media on NAS, OpenMediaVault 6 (Debian Linux).

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!