Virsh-Konsole und Tty-Größe

11

Ich habe einen Virtualisierungsserver, mit dem ich mich über ssh verbinde. Wenn ich jetzt die Größe des Fensters ändere, wird es automatisch an den Server weitergegeben. Es ist am einfachsten zu erkennen stty -a, wenn die Spalten- und Zeilenwerte überprüft werden.

Ich verwende dann, um virsh consoleeine Verbindung zur seriellen Schnittstelle einer KVM-basierten virtuellen Maschine herzustellen. Wenn ich jetzt die Größe des Fensters ändere, wird es nicht auf den virtuellen Server übertragen. Dies lässt sich am einfachsten anhand der Überprüfung erkennen stty -a, die auf der virtuellen Maschine nicht aktualisiert wird, wenn ich die Fenstergröße ändere. Dies bedeutet, dass Zeilenumbrüche im Terminal nicht ordnungsgemäß funktionieren und jede Anwendung, deren Formatierung auf der Fenstergröße beruht (Emacs, Man usw.), durcheinander gebracht wird, es sei denn, die Fenstergröße auf dem Client entspricht der Standardgröße auf dem Server.

Eine Problemumgehung besteht darin, die Fenstergröße mithilfe von stty manuell so einzustellen, dass sie mit dem Clientfenster übereinstimmt. Ich frage mich jedoch, ob es eine Möglichkeit gibt, diese Informationen zu verbreiten und die Fenstergröße in der virtuellen Maschine automatisch festzulegen.

pehrs
quelle

Antworten:

7

Sie können dieses Problem meistens in der Shell umgehen.

Der Befehl:

eval `/usr/bin/resize`

setzt die Shell-Variablen COLUMNS und LINES entsprechend und exportiert sie dann. In bash können Sie Ihrem .bash_profile (oder .profile, je nachdem, welches Sie verwenden) Folgendes hinzufügen:

PROMPT_COMMAND="eval `/usr/bin/resize`"

Oder in zsh:

function precmd {
    eval `/usr/bin/resize`
}

Damit wird eine Größenänderung direkt vor jeder Eingabeaufforderung durchgeführt. Der Effekt wäre nicht der von ssh oder telnet, bei dem die Fensteränderungen sofort behandelt würden, aber ich denke, dies ist wahrscheinlich der beste, den Sie bekommen werden.

Kennzeichen
quelle
Ein bisschen hacky, aber immer noch eine gute Lösung. Vielen Dank!
Pehrs
Siehe auch diese Antwort, um es ohne den resizeBefehl von xterm zu tun : unix.stackexchange.com/a/283206
rsaw
2

Telnet und SSH verfügen über einen Out-of-Band-Kanal zum Konfigurieren dieser Einstellungen. Serielle Schnittstelle nicht. Siehe: http://tools.ietf.org/html/rfc1073 und http://tools.ietf.org/html/rfc4254#page-14

Mircea Vutcovici
quelle
2
Ich habe irgendwie herausgefunden, dass es sich um einen Kontrollkanal handelt. Es bleibt jedoch die Frage, ob es eine bessere Problemumgehung für Konsolen von KVM-basierten virtuellen Maschinen gibt. (Es macht mir nichts aus, die Maschinen neu zu konfigurieren)
Pehrs
0

Nur um die Antwort von Mark zu ergänzen, kann ich aufgrund von Serverfault keine Kommentare abgeben.

Wenn die Zieldomäne OpenBSD 6.6 ist , befindet sich die Größenänderung an einer anderen Stelle und erfordert mindestens die Einstellung xbase66.

Wenn Sie das Standard- ksh verwenden , reicht es außerdem aus, Folgendes auszuführen:

eval `/usr/X11R6/bin/resize`

Es ist eine Schande, dass dies nicht im KVM-Administratorhandbuch von Red Hat enthalten ist.

tryfail
quelle