SSH-Terminalbreite bei Ausführung von plink.exe unter Windows

3450
Björn Lindqvist

Ich verwende Console2 zum Ausführen einer Powershell, in der plink.exe ausgeführt wird, um eine Verbindung zu einem Linux-Server herzustellen. Es funktioniert gut, mit der Ausnahme, dass ps, top und andere Dienstprogramme in der Shell nur denken, dass das Ausgabefenster 80 Zeichen breit ist, während das Fenster wirklich etwa 200 Zeichen breit ist. Wie kann ich sie dazu bringen, die tatsächliche Konsolengröße zu ermitteln?

1

4 Antworten auf die Frage

2
grawity

plink is designed to be used as a transport for binary data. It does not provide any sort of terminal emulation – and neither does the Windows console. This means that the remote end simply cannot know your terminal size.

If you want a full-featured console-based SSH client, install Cygwin OpenSSH.

Hm, das verstehe ich nicht. In Console2.exe (der Konsole) führe ich PowerShell.exe (die Shell) mit plink.exe (ssh-Transport) aus, um eine Verbindung zu einem Server herzustellen. Ist das nicht analog zu gnome-terminal, wenn bash ssh läuft? Wenn dies auf einem Linux-Client funktioniert, warum nicht auf einem Windows-Client? Björn Lindqvist vor 12 Jahren 0
@ BjörnLindqvist: Es * ist etwas analog. Der wichtigste Unterschied ist, dass die [Windows-Konsole] (http://msdn.microsoft.com/de-de/library/windows/desktop/ms682010%28v=VS.85%29.aspx) im Gegensatz zum GNOME-Terminal nicht funktioniert Verarbeiten von ANSI / VT220-Escape-Sequenzen; Stattdessen rufen Programme spezielle Funktionen (z. B. ioctls) am Konsolengriff auf, um das Textformat zu ändern oder den Cursor zu bewegen. Bei der Verwendung von Cygwin-Programmen (wie Cygwin OpenSSH) führt die cygwin1-Laufzeit diese Sequenz automatisch aus -> API-Übersetzung; Wenn Sie native Win32-Programme (wie Plink) verwenden, geschieht dies nicht. grawity vor 12 Jahren 0
@ BjörnLindqvist: Ein weiterer Unterschied besteht darin, dass der `plink`-Client, der für ** Batch-Nutzung ** geschrieben wurde, standardmäßig keinen TTY auf der Serverseite zuordnet, sodass Remote-Programme die Bildschirmgröße nicht ermitteln können . (Vollbildprogramme verwenden spezielle Ioctl-Werte auf ihrem Ausgabegerät, wenn es sich um eine tty handelt; sie können dies nicht bei einfachen Pipes tun, wenn keine tty vorhanden ist.) Selbst wenn Sie "plink -t" verwenden, um die TTY-Zuweisung zu erzwingen, wird plink nicht weitergeleitet die tatsächliche Konsolengröße - es wird immer eine generische Größe von 80 x 25 festgelegt. Auf der anderen Seite hat OpenSSH denselben Client für die Batch- und interaktive Verwendung. grawity vor 12 Jahren 0
@ BjörnLindqvist: Randbemerkung: Console2.exe ist nicht die eigentliche Konsole; Es handelt sich lediglich um einen dünnen GUI-Wrapper um ein verborgenes Windows-Konsolenfenster, wobei der Bildschirmpuffer regelmäßig gelesen wird. Sie kann der Konsole keine neuen Funktionen hinzufügen (z. B. ANSI / VT220-Unterstützung) und die Funktionsweise von * plink * und anderen Konsolenprogrammen nicht ändern. grawity vor 12 Jahren 0
1
hayavuk

Ich weiß, dass die Antwort akzeptiert wurde, aber lassen Sie mich nur erwähnen, dass PuTTY selbst einen richtigen Terminal-Emulator bereitstellt, ohne dass die Probleme, die OP angesprochen hatte, auftreten.

1
adoxa

Sie können puttydie Fenstergröße konfigurieren, die plinkdann erkannt wird. Ich habe den PuTTY-Entwicklern einen Patch geschickt, der plinkdie aktuelle Konsolenbreite verwendet (beim Start erkennt die Größenänderung nicht). Update : Sie haben den Patch abgelehnt. Plink sei nicht für die interaktive Verwendung gedacht. Update2 : individuelle Plink .

0
Rich Homolka

Was ist deine Shell auf der Linux-Seite?

Wenn es bash ist (was ich vermute, dass es das ist), können Sie bash anweisen, es zu aktualisieren, was die Fenstergröße ist

stellen:

shopt -s checkwinsize 

in Ihr Linux $ HOME / .bashrc. Ich bin mir nicht sicher, was das Äquivalent für zsh wäre

Zu Ihrer Information, `checkwinsize` führt lediglich dazu, dass $ ROWS / $ COLUMNS aktualisiert wird. Vollbild-Dienstprogramme wie` top` hängen nicht von diesen Variablen ab, sondern fragen das tty-Gerät direkt ab. grawity vor 12 Jahren 0