SSH mit fixem Befehl von Kodi ausführen?

  • Kodi 19.4
    Fire TV Stick

    Hi,
    Ich habe am PC ein einfaches Script um meinen Server herunterzufahren. Das Script is int python 3 und verwendet paramiko.

    Ich würde jetzt gerne das selbe von Kodi aus machen.


    Wie mache ich das? Mir ist es egal wie ich zu meinem Server verbinde, hauptsache es funktioniert. Auf Kodi kann ich ja anscheinend kein paramiko installieren bzw. finde nicht wie.
    Irgendwelche Terminal Apps, bei denen ich Scripte "ablegen" und mit einem Klick ausführen kann passen mir auch.

    mfg

  • Das wird leider sehr schwierig.

    Das Problem an der Stelle ist, dass du Android verwendest. Ob es gewisse Android-Apps gibt, die das können weiß ich nicht. Du wirst Paramiko wahrscheinlich über pip installiert haben. So würde man es zumindest unter Linux machen. Wie es unter Windows aussieht, weiß ich nicht. Unter Kodi kannst du Paramiko auch nicht installieren, da es ein Modul ist, welches von Python benötigt wird und somit etwas ist, was du dem Betriebssystem und Python zur Verfügung stellst und nicht Kodi. Daher ist die Suche nach "Paramiko" für Kodi ohnehin sinnlos.

    Ich habe mal ein anderes Python-Modul ausprobiert: pxssh

    Folgendes Script habe ich mir mal geschrieben:

    Da ist noch ziemlich viel Müll drin. Im Endeffekt hat das aber über meinen PC funktioniert und ich konnte auf meinem Kodi-Client von meinem PC aus via Python Kommandos ausführen und das ohne irgendwas via "pip" zu installieren. Als ich das aber alles in ein Add-on gepackt habe und es dort auch ausführen wollte kommt dieser Fehler:

    RuntimeError: fork not supported for subinterpreters

    Kodi kann das also nicht auf diese Art und Weise, da Kodi selbst keine "subinterpreter" unterstützt.

    Da ich keinen anderen Weg gefunden habe um über Kodi eine "Remote Code Execution" (was es im Endeffekt ist) auszuführen, habe ich dieses Projekt auf Eis gelegt.

    Mich würde an der Stelle interessieren, was genau "der Server" ist. Was macht er? Hat er eine API, die man ggf. ansprechen kann um die Maschine auf diesem Weg herunter zu fahren?

    Wenn nicht irgendjemand einen Weg kennt das über eine Android-App zu lösen, dann wird es schwer

    Es gibt noch die Option über das Modul subprocess und dann ein subprocess.Popen(....). Da steht und fällt es mit den Kommandos, die dir das Host-System (Android in dem Fall) zur Verfügung stellt. Wenn es dort das Kommando ssh nicht gibt, dann ist es schon vorbei. Weiter fällt es dann, wenn die Maschine, mit der du dich verbinden möchtest nach einem Passwort fragt. Dafür gibt es unter Linux das Kommando [tt]sshpass[ -p <passwort> ssh <user>@<ip> <kommando>/tt]. Aber auch da ist es die Frage, ob Android dir "sshpass" zur Verfügung stellt. Unter Linux muss ich auch das zusätzlich installieren.

    Kurzum....über ein Add-on wird es unter Android nicht gehen. Bzgl Android-Apps muss dir ein anderer weiter helfen. Wenn du Linux verwenden würdest, dann könnte man einen Zugang via SSH-Key realisieren. Ich vermute aber, dass es schwer sein wird unter Android einen SSH-Key zu erstellen und diesen dann auf dem Server zu hinterlegen. Einen Zugang ohne Passwort würde ich dir nicht empfehlen. Denn dann kann jeder einfach so auf den Server zugreifen.

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

    Einmal editiert, zuletzt von DaVu (9. Januar 2023 um 20:27)

  • Ich würde jetzt gerne das selbe von Kodi aus machen.

    Kann man das nicht umgekehrt machen, d.h. der Server fährt von sich aus runter, wenn kein Client mehr konnektiert ist?

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Das wäre in der Tat eine Option, wenn das so gewollt ist und der Server in direkter Verbindung zu Kodi steht. Kann ja sein, dass der Server erstmal nichts mit Kodi zu tun hat und der TE ihn einfach nur via Kodi runter fahren möchte. ;)

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

  • Ver***ckte Security Sch***e von Android.

    Hab ja auch Linux Kodi kleines plugin am laufen, das einfach shell script started, der dann bild ausdruckt. Auf den clients tatsaechlich per ssh auf den server mit dem drucker. Wollte das immer mal auf kodi auf android bringen. Weiss schon warum ich mich da nicht ranwage.

    Bin ja auch schon an anderen Stellen ueber diesen Security Zirkus von Android gestolpert.

  • Wahrscheinlich ist die Loesung, auf dem Server einen minimalen Webserver zu schreiben/installieren, der die gewuenschten Dienste per HTTP/REST anbietet. Dann ist es wahrscheinlich kein Problem ein addon unter Android zu haben, das dann diese Server URLs aufruft. Sollte dann fuer so einen script wie der OP ihn will wahrscheinlich ohne plugin gehen. Einfach passende Datei erzeugen, die eine playlist mit der passenden URL drin ist oder so...

  • habs mir nochmal angesehen.

    Der Server ist einfach Unraid.

    Ja, ich kann den Server zwar einstellen, dass er herunterfährt wenn mein Client weg ist aber entweder muss ich das Timeout ziemlich hoch ansetzen, was mir dann nichts bringt. Und wenn ich es zu kurz habe dann kann es sein, dass ich zB mal weg gehe und in der Zwischenzeit geht der FTV schlafen und ist imo weg aus dem Netzwerk. Dann muss ich den Server extra wieder anschalten.
    Hab schon die ganzen Probleme mit dem einfachen Sleep. :X

    Aber anders:
    Können wir vielleicht Telnet verwenden?

  • Jeder python script kann eine http URL aufrufen und damit aktivieren, deswegen mein Hinweis darauf, auf dem Server einen zehn-zeiligen HTTP server zu installieren, und den vom script des clients aus aufzurufen. Das ist am Ende die IMHO einfachste Loesung.

Jetzt mitmachen!

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