Telnet (busybox/linux) Dateimanager

  • Ich habe ein Autoit-Progrämmchen erstellt mit dem ich in den Dateien kleiner linux-basierter Kisten, wie z.B. Media-Streamer oder NAS (evtl. auch Router) recht bequem erkunden kann. Außerdem ist noch eine simple Möglichkeit vorhanden, über einen externen Editor Textdateien zu bearbeiten (Download->Edit->Upload).

    Die Dateiliste ist mit den bei Norton-Clones (z.B. TotalCommander) üblichen Tastaturkommandos zu navigieren.

    Wichtige Voraussetzungen:

    • Das Gerät verwendet "busybox" als shell (recht häufig bei embedded systemen), seit 0.3 könnte es auch mit einem linux ohne busybox klappen.
    • Das Gerät ist per Telnet (nicht SSH) erreichbar.

    Intern setzt die Software die Funktionen in telnet/busybox kommandos um und versucht bestmöglich die Ausgaben in der GUI anzuzeigen. Es gibt auch ein Telnet-Fenster, welches die Kommunikation anzeigt.

    Die Kompatibilität ist natürlich mangels Standardisierung der Ausgaben recht wackelig. Bei wem die Software also nicht recht klappt, der muß selber dran. ;)

    Der Code ist sicherlich nicht der sauberste, aber evtl. hilft er auch dem einen oder anderen, der z.B. einen Statusmonitor für seinen Router/NAS etc. basteln möchte.

  • Tolles Programm, funktioniert bei mir mit nem DD-Wrt Router einwandfrei.
    Leider jedoch nicht mit meiner Fritzbox, die verlangt nur das Passwort, da hilft auch der leere Benutzername leider nicht.

    Insgesamt ein tolles Programm, quasi das WinScp für Telnet :)

  • Hallo Slowly,
    danke für die nette Rückmeldung.

    Versuch doch mal das Kennwort statt im Kennwortfeld beim Benutzernamen anzugeben. (Ich weiß, es ist dann sichtbar.)
    Vielleicht klappt das. Ansonsten findet sich der Code für die Anmeldung etwas weiter unten in "TelnetConnect()".

    Mit WinScp kann mein Script bezüglich der Dateiübertragung sicher nicht mithalten. Die ist sehr langsam. Aber als Notlösung...
    Da manche Geräte recht magere Versionen/Builds von busybox verwenden, habe ich bei der Dateiübertragung das minimal-programm gefahren (z.B. auf uuencode o.ä. verzichtet).

  • Moin Flip,

    für Fritzboxen klappt Pw als Benutzername.

    Bezüglich des Vergleichs mit WinScp, klar ist das ne andere Liga, genau wie Telnet zu ssh.
    Ich habe jedoch noch nichts Vergleichbares für telnet gesehen und noch nie so bequem damit gearbeit, also zeige dich mal nicht zu bescheiden ;)

  • Update auf Version 0.3.

    Neuerungen:

    • Verzeichnis-Listings sollten nun hoffentlich auch bei einem Linux ohne busybox erkannt werden
    • Telnet Login-Teil bezüglich Kompatibilität etwas überarbeitet. Insbesondere bzgl. IAC Codes
    • Logins sollten nun auch klappen, wenn das Passwort ohne Benutzername angegeben wird
    • Als Kennwort darf nun auch "*" angegeben werden, dann wird das Kennwort bei jedem Login interaktiv abgefragt

    Der Code ist nur minimal getestet. Fehler sind also immer möglich. :D

  • Wau, ein sehr umfangreiches Script. Bei mir läuft es problemlos. Ach ja, der AU3 Check spuckt bei mir eine Warnung aus:

    Code
    >Running AU3Check (1.54.19.0)  from:C:\Program Files (x86)\AutoIt3
    C:\Users\Admin\Desktop\Telnet_Dateimanager.au3(408,34) : WARNING: $pwd possibly not declared/created yet
    					$pwd=GetPWD($socket,$status)
  • Hallo Cheater Dieter,
    danke für den Hinweis. Schön auch zu hören, daß bei Dir das Script gut läuft.

    In diesem Fall kann das "$pwd=" vor dem Kommando in Zeile 408 sogar entfernt werden, da die aufgerufene Fkt das "working directory" direkt in ein Control schreibt. "pwd" heisst in diesem Fall nämlich das Kommando das das aktuelle Verzeichnis abfragt (Print Working Directory).

    Ich habe das hier lokal geändert, werde das script aber erst zur nächsten "Version" in obigem Dateianhang aktualisieren.

  • Meine Busybox unterstützt die Option -e (ls -lea) nicht. Ich bin erst hier auf dieses Scripting Tool gestoßen und kenne es nicht. werde es mir sicher noch etwas genauer anschauen. Ich habe versucht mich trotzdem in dein script reinzudenken - aber da fehlt mir das knowhow.

    ich hab in der Verzweiflung versucht in Zeile 1037 und 1134 einfach aus dem -lea ein la zu machen. Mit dem Erfolg, dass die Fehlermeldung zwar weg und das Komando ausgeführt werden kann, aber er zeigt keine Dateien im Dateimanager Fenster an.

    ls -la zeigt mir folgendes:

    # ls -la
    drwxr-xr-x 4 0 0 0 var
    drwxr-xr-x 6 0 0 53 usr
    drwxr-xr-x 2 0 0 0 tmp
    drwxr-xr-x 9 0 0 0 system
    drwxr-xr-x 10 0 0 0 sys
    drwxr-xr-x 2 0 0 706 sbin
    dr-xr-xr-x 136 0 0 0 proc
    drwxr-xr-x 3 0 0 0 param
    drwxr-xr-x 2 0 0 3 mnt
    drwxr-xr-x 2 0 0 0 media
    drwxr-xr-x 4 0 0 1018 lib
    lrwxrwxrwx 1 0 0 11 init -> bin/busybox
    drwxr-xr-x 3 0 0 24 home
    drwxr-xr-x 10 0 0 196 etc_ro
    drwxr-xr-x 3 0 0 0 etc
    drwxr-xr-x 3 0 0 641 dev
    drwxr-xr-x 2 0 0 707 bin
    -rw-rw-rw- 1 0 0 0 .init_enable_core
    drwxr-xr-x 18 0 0 193 ..
    drwxr-xr-x 18 0 0 193 .

    ist ein BusyBox v1.12.1 (2012-11-20 15:16:24 CST) System.

    Wäre echt super wenn du (oder jemand der schon etwas versierter mit der Scriptsprache ist) mir da helfen könnte.

  • Hallo bandit,
    gibt der echt kein Datum raus? Ist ja spannend!

    Also, du müsstest den regulären Ausdrucks in der ersten Zeile des lsFmt Arrays anpassen.
    Da müssen die Ergebnisse von 0 bis 10 (jeweils geklammert) die passenden Felder treffen.
    (Siehe Beispiele in dem Kommentar darüber)

    lsFmt[0]

    (Die Inhalte 5-9 Beschreiben das Datum und bleiben hier dann wohl leer)

    0 1 2 3 4 (5,6,7,8,9) 10
    drwxr-xr-x 2 0 0 706 sbin

    Folgender Eintrag sollte die erste Zeile in lsFmt dann ersetzen (ungetestet!)
    "([dlrwxr-]+)\s+([^ ]+)\s+([^ ]+)\s+([^ ]+)\s+([0-9]+)\s+()()()()()(.*)", _

    Hoffentlich klappts. :)

    Frohes Neues vom AutoFlip!

  • Hi Flip,

    vielen Dank für deine Antwort, dir auch erst mal ein gutes neues Jahr.

    Denke deine Scriptanpassung setzt voraus, dass ich aus den beiden lea - Listings la Listings mache. Gleich mal ausprobiert und ....

    wow, funktioniert, tadellos. Kompliment - echt cooles Tool. Eben doch das WinSCP für Telnet Clients ;)

    Vielen Dank super Arbeit, wird wohl noch ne Weile dauern, bis ich hinter so ein script steige
    Also für alle bei denen das mit dem lea Listing nicht funktioniert weil die Option e nicht unterstützt wird, so funktionierts.

    1000 - Dank, macht das arbeiten, durchstöbern echt viel leichter, und man behält den Überblick.

  • Hallo Bandit,
    es freut mich, dass es geklappt hat.

    Nun ja, "wie WinSCP" ist vielleicht etwas übertrieben.

    Je nach Client und busybox Befehlssatz gibt es eben auch mal Probleme. Das gilt nicht nur für ls sondern auch durchaus für die gewählten Umwege des Dateitransfers. Und schnell und unbedingt zuverlässig ist der natürlich auch nicht gerade. Aber eben besser als nix. ;)