wie einloggen in meinen Linux-Receiver

  • Hi, gleich mal vorweg: die Wahrscheinlichkeit eines XY-Problems ist vermutlich höher als 50 %

    Ich will mich in meinen Linux Receiver einloggen und einen Befehl ausführen. Dabei soll das Ganze so einfach wie möglich gehalten werden.

    Auf dem Receiver läuft OpenWebIf.

    Meiner Meinung nach, wäre es am einfachsten sich darüber einzuloggen.

    ShellExecute("http://IPADRESSE:PORT")Das öffnet mir die Startseite. Einloggen kann ich mich dann über das Extra-Menü "Terminal"

    oder direkt mit dem Aufruf ShellExecute("http://IPADRESSE:PORT/terminal")

    Dann öffnet sich im Browser ein Reiter namens "Shell in a Box" wo ich mich dann einloggen will/muss.

    zuerst den Usernamen + Enter (dieser Vorgang ist noch sichtbar)

    danach das Passwort + Enter (dieser Vorgang ist nicht sichtbar, führt aber zum erfolgreichen Login, wenns PW stimmt)

    Dann geb ich meinen gewünschten Befehl "reboot + Enter" ein und zack, die Kiste rebootet....

    Manuell funktioniert das alles einwandfrei, aber ich bekomm es nicht hin, das Ganze zu automatisieren.

    Der Aufruf ShellExecute("http://USER:PASSWORT@IPADRESSE:PORT öffnet mir auch nur die Aufforderung zum Einloggen...

    Oder gibt es einen wesentlich besseren Weg, die Box neu zu starten? AUSSER den Weg über die Fernbedienung ^^

    Das Programm von mir ist schon recht brauchbar geworden. Und wenn ich die Box via meinem Tool rebooten kann, wäre das das I-Tüpfelchen.

  • Naja da dort Linux läuft und das "terminal" vermutlich nix anderes ist als eine webbasierte SSH Verbindung würde ich die Webautomatisierung komplett weglassen und direkt per SSH zugreifen. Putty sollte entsprechend automatisierbar sein um sowohl login, als auch reboot zu bewerkstelligen, ganz ohne fehleranfällige Tastatur Emulation oder Webseitenautomatisierung.

    EDIT:

    Plink aus dem Putty Paket sollte das können was du brauchst

    https://www.thegeekstuff.com/2017/05/putty-plink-examples/ (siehe Punkt 3)

    https://the.earth.li/~sgtatham/putt…c/Chapter7.html (siehe Parameter zur PW Übergabe)

    3 Mal editiert, zuletzt von misterspeed (8. August 2020 um 00:23)

  • soooo,

    mein Befehlsaufruf sieht so aus:

    ShellExecute(".\plink.exe", "root@192.168.2.99 -pw Passwort reboot")

    Dann kommt ein Consolenfenster mit der Meldung:

    "Using username "root".

    Access granted. Press Return to begin session."

    Zum einen muss ich Enter drücken, zum anderen wird nicht rebootet.

    Vermutlich liegt letzteres an falscher Syntax.

    - Wie muss die korrekte Syntax dafür aussehen?

    - Wie kann ich das Enter-drücken umgehen?

  • Hi Lottich,
    ich hatte den Receiver vor ein paar Jahren auch. Damals habe ich KiTTY genommen. Ein PuTTY fork, bei dem man in die Verbindungsprozedur noch weitere anschließende Befehle hinterlegen konnte - wie Enter..

    Ich bin da etwas raus. Ist wirklich schon länger her. Vielleicht geht das auch bei PuTTY.

    Magst du vielleicht noch erzählen, was du machen möchtest?

    Grüße autoiter

  • Magst du vielleicht noch erzählen, was du machen möchtest?

    Ich will den Receiver einfach nur rebooten.

    Das kommt dann in eine Funktion, die beim Beenden des eigentlichen Scripts aufgerufen wird. Einfach nur die Box neu starten...

    Die Verbindung via ftp klappt prima, die ganzen Auswertungen meines Errorhandlings auch, was ne Heidenarbeit war. Aber ich

    krieg es nicht hin, dass sich die Kiste neu startet... schon frustrierend...

  • jaja, ich nochma

    ShellExecute("http://192.168.xxx.xxx/web/powerstate?newstate=2")

    Damit wird erfolgreich der Reboot des Receivers ausgelöst.

    Das öffnet den Standard-Webbrowser und ruft besagte Seite auf. Nachdem der Reboot ausgelöst wurde, bekomm ich vom Browser (bei mir Opera)

    "negatives Feedback" indem er mir sagt, dass die Website nicht erreichbar ist. Dann lädt sich die Seite 2 - 3 mal neu.

    Ich hab jetzt verschiedenes versucht um den Browserreiter zu ermitteln, damit ich den schliessen kann, aber das bekomm ich nicht auf die Reihe.

    Auch scheint mir ShellExecute() eine falsche PID zurückzugeben. im Testfall lautete die PID 10062 ... Aber im Taskmanager (akt. win10) tauchte diese gar nicht auf?!

    Weiss jemand eine Möglichkeit, wie ich einen bestimmten Reiter im Webbrowser schliessen kann?

    Oder gibt es eine bessere Möglichkeit powerstate?newstate=2 zu setzen?

    ____________

    Nachtrag:

    anhand der PID wollte ich das HWND ermitteln um es den Fokus zu geben. Anschliessend per Send(strg+F4) den Tab schliessen.

    Aber das hat nicht funktioniert, vermutl. wegen falscher PID-Rückgabe...

  • Lottich 11. August 2020 um 16:25

    Hat das Label von [ offen ] auf [ gelöst ] geändert.