Script von extern starten

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Ich möchte mich gerne von meinem Coolstream Sat Receiver (NeutrinoHd - Linux OS) auf meinem Raspberry einloggen und dann ein Python Script starten. Der Receiver kann kein SSH schon mal vorweg. Und das ganze möchte ich dann automatisieren und natürlich möchte ich das Python Script auch wieder über den Receiver beenden.

    Am Receiver soll das ganze dann als Plugin am TV Bildschirm gestartet bzw gestopt werden.

    Einmal editiert, zuletzt von kaschperle83 (25. Oktober 2014 um 13:44)


  • Der Receiver kann kein SSL schon mal vorweg.

    Auch kein ssh?


    Und das ganze möchte ich dann automatisieren und natürlich möchte ich das Python Script auch wieder über den Receiver beenden.

    Evtl. könntest Du das auch mit socat auf deinem Pi, machen.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Nein ich muss ja nichts auf den Receiver weiterleiten. Ich möchte quasi ein Plugin auf dem Receiver starten das dann quasi die benötigten Kommandozeilen Parameter an den raspi übergibt der daraufhin ein Script startet bzw wieder stopt.

  • Die Coolstream kann aber Telnet und soweit ich mich erinnere kann man SSH (dropbear) auch nachinstallieren. Ansonsten eben einen Telnet Server auf dem PI installieren, oder ein Webscript (php) mithilfe von wget oder curl aufrufen ...

    Jenachdem was für ein Image du auf der Coolstream nutzt gibts auch Möglichkeiten einen Menüpunkt selber einzutragen..

  • GreatJo: Man kann über FTP kein Script starten...

    Bevor jetzt der nächste kommt und was falsches vor schlägt, hier noch mal sein Anliegen: Er will über die Coolstream (TV Receiver Box) ein Python Script auf dem PI ausführen.

    Es gibt also nur eine Handvoll Möglichkeiten das zu realisieren

    • SSH-Client auf der Coolstream einrichten damit ein dort ausgeführtes bash Script ein Befehl absetzen kann
    • Auf SSH verzichten und das ganze stattdessen über Telnet umsetzen. netcat (nc) müsste zB ebenfalls standardmäßig auf der Coolstream installiert. Zur Automatisierten Benutzer/Password Eingabe benötigt man dann aber expect.
    • Das bash Script auf der Coolstream ruft über wget oder curl eine URL auf dem PI auf, welcher dann alles weitere (starten und beenden des Python Scripts) übernimmt. Das wäre vermutlich das einfachste.
    • Mit Sockets zu hantieren - wäre aber umständlicher..
  • Jaaaa, das habe ich verstanden.
    Man kann über ftp aber Dateien auf den anderen Rechner kopieren.
    Und wenn dort sowieso ein Prog oder Script läuft, könnte man eine Datei (z.B. blabla.txt)
    auf Vorhandensein prüfen und als Trigger benutzen um weitere Scripte
    zu starten. So habe ich es schon gemacht.
    Ist zwar "dirty", aber funktioniert prächtig.

  • .....dann muss eben eine Instanz im Hintergrund laufen, sind doch nur ein paar Zeilen Code.
    Also wen's interessiert, kopieren von einem Rechner zum anderen:
    scp blabla.txt pi@192.168.178.30:/home/pi - wäre das einfachste. Für andere Pfade müssen Rechte angelegt werden.

    So, dann klink ich mich jetzt hier aus.


  • ...
    scp blabla.txt pi@192.168.178.30:/home/pi - wäre das einfachste.
    ...


    es geht offensichtlich nicht um den RPi sondern um diese "Coolstream" ...
    Auch einfach mal was rüberkopieren :fies:
    Manchmal ist es sehr hilfreich, das Anliegen des TE zu lesen und vor allem zu verstehen statt seiner Phantasie freien Lauf zu lassen ;)

    cu,
    -ds-


  • Ich möchte mich gerne von meinem Coolstream Sat Receiver (NeutrinoHd - Linux OS) auf meinem Raspberry einloggen und dann ein Python Script starten.

    Darum geht es.....



    Man kann über ftp aber Dateien auf den anderen Rechner kopieren.
    Und wenn dort sowieso ein Prog oder Script läuft, könnte man eine Datei (z.B. blabla.txt)
    auf Vorhandensein prüfen und als Trigger benutzen um weitere Scripte
    zu starten.

    Das habe ich als Lösung vorgeschlagen, da sein Vorhaben nicht direkt und nicht so einfach auszuführen ist.

    dreamshader - Du scheinst mir hier der einzigste zu sein, der NICHTS verstanden hat und ALLES durcheinander bringt.
    :@.


  • ...
    dreamshader - Du scheinst mir hier der einzigste zu sein, der NICHTS verstanden hat und ALLES durcheinander bringt.
    :@.


    richtig ... und er weiss nicht wie ...
    Und dazu hatte meigrafd -> hier <- ja schon beschrieben, welche Möglichkeiten da wohl möglich sind.
    Und so wie ich das sehe ist der TE wohl nicht in der Lage, eine Kommunikation zwischen diesem Coolstream-Teil und dem RPi hinzubekommen, die über die Fernbedienung des Coolstream gesteuert wird.
    Was willst Du also da mit Deinem FTP-Teil :s ...+
    Da hängt doch ein Riesen-Rattenschwanz dran ... Datei mit Parametern erzeugen, passiv per FTP übertragen, dann auf dem RPi checken, wann das File da ist, die Parameter parsen und auslesen, script starten , checken, wann das File verschwindet, script beenden, ... und was weiss ich noch.

    Da erscheint es mir doch wesentlich sinnvoller und einfacher einen wget zu starten ...

    Wenn Du jetzt sagen würdest, Du hast so ein Teil und es geht nicht anders ... dann wäre das eine konkrete Aussage. Aber so ...

    cu,
    -ds-

  • Das ist nicht sonderlich kompliziert:
    1.) sudo apt-get install proftpd
    Damit hat man schon mal von Aussen Zugriff auf /home/pi
    2.) scp test.txt pi@192.168.178.30:/home/pi
    3.) Abfrage z.B. im Python Prog:
    if os.path.exists("/home/pi/test.txt":
    os.remove("/home/pi/test.txt")
    ...whatever

    Das funkt schon seit ca. einem Jahr von Android aus bei mir.
    Aber was sollen wir uns hier die Haare raufen, der TE meldet sich ja nicht mal.
    Verstehe nicht, dass man die Meinung eines anderen nicht einfach stehen lassen kann,
    ohne einen gleich für dumm verkaufen zu wollen.
    Ist dir bewußt, dass du damit jegliche Zusammenarbeit und auch jegliche Motivation anderen zu helfen zunichte machst?
    Ihr redet hier für den TE als würde man ihm keine eigene Meinung zutrauen.
    Das finde ich ziemlich unerhört.


    Gruß

  • Hi,
    das ist das, was ich meinte ... Du hast jetzt wunderbar irgendwelche Installationen beschrieben.
    Du setzt bei Deiner Lösung imho einfach zuviel Wissen voraus. Das ist ein Fehler, der mir hier anfangs immer wieder passiert ist.
    Und auch bei Dir ist mir das passiert ... Du konntest meinem Gedankengang bis jetzt nicht folgen.
    Jetzt weiss unser Fragesteller aber immer noch nicht, wie er von seinem Coolstream-Teil aus einem Menü eine Aktion auslöst ...
    So wie ich das sehe, ist das der Dreh- und Angelpunkt. Und das war mein Gendankengang - alles klar?

    BTW: er wollte irgendwas mit einer ssh probieren und taucht dann schon wieder auf ;) ...

    cu,
    -ds-

  • Jungs... Ich hab zwei Coolstream's im Freundeskreis und ich weiß was damit möglich ist - das erwähnte ich bereits in Beitrag#5 und 8.

    Ist dir @GreatJo bewusst das du mit solchen Beiträgen genau das machst was du nun dreamshader vorwirfst?

    Der TE hat genau beschrieben was er machen möchte: Über die Fernbedienung des Coolstream TV-Receivers ein Python Script auf dem PI ausführen und beenden.

    Da bringt es auch nichts irgendwas bezüglich FTP-Server oder Android zu raten wenn es aber völlig am Anliegen des ThemenErstellers vorbei geht.

    Das Linux auf einem Receiver ist ziemlich mager, keinesfalls mit einem "normalen" Linux System vergleichbar und noch dazu nur extrem wenig Speicherplatz um zusätzliches nachträglich zu installieren... Es kommt zudem immer darauf an was für ein Image genutzt wird, es kann nämlich gut sein dass das bereits hart an der Grenze vollgestopft mit irgendwelchen Plugins o.ä. ist, dann ließe sich auch kein scp mehr nachträglich installieren. Mal davon abgesehen das es verschiedene Coolstream Receiver gibt und nicht alle gleich sind....


  • Jungs... Ich hab zwei Coolstream's im Freundeskreis und ich weiß was damit möglich ist - das erwähnte ich bereits in Beitrag#5 und 8.

    Moin, bist du sicher, dass die Box ssh nicht von Haus aus unterstützt? Können das deine Freunde bestätigen, dass da kein ssh unterstützt wird?

    Ich bin da auch meigrafd's Meinung, dass die ssh-Variante die einfachste wäre.

    kaschperle83
    Wie viel Speicherplatz ist noch vorhanden?


  • Moin, bist du sicher, dass die Box ssh nicht von Haus aus unterstützt? Können das deine Freunde bestätigen, dass da kein ssh unterstützt wird?

    Wie gesagt, kommt aufs jeweilige Image bzw dessen Version an. Wenn man zB das Keywelt Image nutzt ist SSH nicht vorinstalliert, es lässt sich aber wie auch bei den meisten anderen Dropbear nachinstallieren..

    Ich kann auf die beiden Coolstream's auch so zugreifen, aber bei beiden kommt "Connection refused" sofern ichs mit SSH probiere. (ich verbinde mich erst auf ein ThinClient und von dort auf die Coolsteam's)

    Aber wie gesagt, der TE möchte ja nicht via SSH auf die Coolstream sondern von der Coolstream auf den RaspberryPI. Die Coolstream wäre also der Client.


    Bevor es hier weiter ausartet beschreibe ich einfach mal von Anfang an wie man ein Plugin einbindet etc:

    Ein Plugin besteht aus mind. 2 Dateien:

    • das Script, oder Lib.
    • dessen Konfigurationsdatei, die, abgesehen von der Dateiendung *.cfg, den selben Dateinamen wie das Script hat.


    Die Dateien müssen beide üblicherweise im Verzeichnis /var/tuxbox/plugins/ oder /lib/tuxbox/plugins/ abgelegt werden.

    Die Konfigurationsdatei könnte zum Beispiel wie folgt aussehen:

    Code
    type=3
    name=test
    desc=test
    needfb=0
    needrc=0
    needvtxtpid=0
    needoffsets=0


    Wichtig hierbei ist der Eintrag type=3 denn dieser gibt an, dass dies ein Shell-Script ist.
    Eine genaue Beschreibung was die Einträge bedeuten findet man für ein NeutrinoHD Image hier: http://wiki.tuxbox.org/wiki/Plugin.cfg

    Nun ein paar Beispielscripte:

    • Für SSH:

      Bash
      #!/bin/sh
      ssh pi@raspberrypi.ip "ls -la /tmp"


      Da man hier kein Password eingeben oder übergeben kann, muss man SSH-Keys auf dem PI einrichten und ein mal manuell eine Verbindung von der Coolstream zum PI herstellen (da noch eine yes/no Abfrage beim ersten mal kommt, da dann halt "yes" eingeben)

    • Für TELNET:

      Bash
      #!/bin/sh
      telnet raspberrypi.ip
      sleep 1
      echo pi
      sleep 1
      echo password
      sleep 1
      echo "ls -la /"
      sleep 1
      echo exit

      password mit dem Benutzerpassword von pi ersetzen..

    • Für WGET:

      Bash
      #!/bin/sh
      wget -q -O- http://raspberrypi.ip/execute_python.php?start
    • Für CURL:

      Bash
      #!/bin/sh
      curl --silent http://raspberrypi.ip/execute_python.php?start
      • Für WGET oder CURL muss das PHP Script natürlich existieren und könnte wie folgt aussehen:[code=php]
        <?php
        if (!empty($_POST)) {
        foreach ($_POST AS $arg => $var) {
        $MODE = $arg;
        if ($arg == "start") {
        exec("python /home/pi/switcher.py", $output, $return_var);
        } else if ($arg == "stop") {
        exec("killall -9 switcher.py", $output, $return_var);
        }
        }
        if (isset($return_var) AND $return_var >= 1) {
        echo "ERROR: \n";
        echo exitcode($return_var)."\n";
        } else if (isset($output) AND !empty($output)) {
        foreach($output AS $line) { echo $line."\n"; }
        } else {
        echo "Script ".$MODE."ed\n";
        }
        }

        function exitcode($code) {
        $ReturnCode['0'] = "Successful";
        $ReturnCode['1'] = "General Error (Miscellaneous errors, such as 'divide by zero' and other impermissible operations)";
        $ReturnCode['2'] = "Incorrect Usage";
        $ReturnCode['126'] = "Command found but not executable (Permission problem)";
        $ReturnCode['127'] = "Command not found (Possible problem with PATH or a typo)";
        $ReturnCode['128'] = "Invalid argument to exit (exit takes only integer args in the range 0 - 255)";
        $ReturnCode['130'] = "Script terminated by Control-C";
        return $ReturnCode[$code];
        }
        ?>
        [/php]


    Du brauchst für jede Aktion ein extra Script/Plugin. Willst du also sowohl etwas Starten als auch Stoppen, brauchst du jeweils ein Script/Plugin und auch Konfigurationsdatei:
    - start.sh , start.cfg
    - stop.sh , stop.cfg


    Viel Glück :angel:


    //EDIT: Flüchtigkeitsfehler... hatte eine } im PHP-Script vergessen :blush:

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!