• Die default Einstellung der TERM-Variable mit dem Wert dumb ist wenig hilfreich.
    Programme wie mc funktionieren nicht.
    Unter den vielen UNIX-artigen Systemen, die ich kenne, ist original dream das einzige das einen derartigen Wert verwendet.

  • ssh ist eine gute Variante. Es ist einfach an der Zeit dass Dream derartige Ungereimtheiten beseitigt.
    z.B. telnetd patchen.
    Auch das Entfernen des telnetd ist akzeptabel.
    wie auch immer.


    btw systemd setzt kein TERM=


    process id von dropbear ermitteln:
    root@dm920:~# ps -afe|grep dropbear | grep -v grep
    root 631 1 0 19:58 ? 00:00:00 /usr/sbin/dropbear -i -r /etc/dropbear/dropbear_rsa_host_key -B


    Das Environment von dropbear untersuchen:
    root@dm920:~# grep TERM= /proc/631/environ
    root@dm920:~#


    Im Environment von dropbear, aufgerufen durch systemd, ist kein TERM= aufzufinden.

  • Das bezog sich auch nicht auf dropbear was ich vorhin sagte.


    root 224 0.0 0.0 2000 388 ttyS0 Ss+ Oct14 0:00 /sbin/agetty -8 -L ttyS0 1000000 xterm


    wird z.B. in /etc/systemd/system/getty.target.wants/serial-getty@ttyS0.service gesetzt.


    Bei ssh setzt das in der Regel der Client selbst, so z.B. auch in putty

  • Dropbear/ssh habe ich mir nicht angeschaut, aber bei Telnet werden bspw. von MacOS folgende Optionen ausgetauscht:

    Das zeigt:

    • Die Fenstergröße des Terminals (129x27) wird ausgetauscht, damit bspw. less gut arbeiten kann.
    • MacOS bietet an, die lokale Variable TERM zu übertragen (vgl. RFC 1091), was vom telnetd Server auf der Dreambox (tatsächlich ein Teil von busybox) aber nicht wahrgenommen wird.

    Damit bleibt seitens der Dreambox nur noch übrig, TERM auf einen festen Wert zu setzen. Auf meiner alten dm800se (OE 2.0) war das offensichtlich "linux". Auf der neuen dm820 mit OE unstable 2.5 und systemd wird irgendwo "dumb" gesetzt, was für interaktive Sitzungen gar nicht zufriedenstellend ist. Welcher Wert geeignet ist, hängt letztlich davon ab, a) was in der terminfo (s. /usr/share/terminfo/?/*) der Dreambox vorhanden ist und b) dabei vom lokalen Terminal.app, gnome-terminal oder konsole verstanden wird.
    Da geht viel, bspw. vt100, ansi, linux, xterm, xterm-256color oder xterm-color

  • Ich hab's jetzt für mich durch ein systemd override gelöst:
    # systemctl edit busybox-telnetd@.service

    Bash
    [Service]
    Environment=TERM=xterm-color LANG=de_DE.UTF-8

    # systemctl restart busybox-telnetd.socket


    Man hätte das auch in ~/.profile legen können. Profile hätte den Vorteil der besseren Sichtbarkeit und Änderbarkeit.

    Einmal editiert, zuletzt von jophi () aus folgendem Grund: Es heißt xterm-color; linux-color gibt es nicht.

  • Zitat von Klix

    Das Environment von dropbear untersuchen:
    Im Environment von dropbear, aufgerufen durch systemd, ist kein TERM= aufzufinden.

    Der Wert von TERM im Prozess dieses Servers ist egal. Beim Verbindungsaufbau von SSH ist es üblich, dass TERM verhandelt bzw. übertragen wird. Dropbear übernimmt den Wert Deines Terminal-Emulators.
    Bei telnetd ist das auch üblich, aber busybox-telnetd implementiert das nicht.
    Bei getty (Login an einer Konsole) gibt es kein Verhandlungsprotokoll. Daher ist es heutzutage nicht falsch, in serial-getty@.service einfach "TERM=xterm" zu verdrahten, das versteht inzwischen jedes übliche Terminalprogramm des Dreambox-Administrators.
    Das gleiche sollte jedoch auch für busybox-telnetd@.service geschehen, gerade weil und solange es das TERM-Protokoll (RFC 1091) nicht implementiert.