Eine mit „expect“ gestartete SSH-Shell hat nicht die volle Breite. Wie kann ich das beheben?

Eine mit „expect“ gestartete SSH-Shell hat nicht die volle Breite. Wie kann ich das beheben?

Ich verwende expect für die automatische Anmeldung per SSH von einem Unity-Launcher aus. Der Befehl sieht ungefähr so ​​aus:

gnome-terminal -t SSH1 -e "expect -c 'spawn ssh [email protected] ; expect assword ; send \\"password123\\n\\" ; interact'"

Für die automatische Anmeldung funktioniert das einwandfrei, aber wenn ich das Gnome-Terminalfenster maximiere, bleibt der Inhalt der SSH-Shell kleiner, als ob das Fenster die Standardgröße hätte, etwa so:

Bildschirmfoto

Zuerst dachte ich, es läge daran, dass das Gnome-Terminal mit der Standardgröße gestartet wurde und beim Maximieren aus irgendeinem Grund die Größe des SSH-Zeugs nicht angepasst wurde. Dann habe ich es aber gnome-terminal --window --maximizezum Befehl hinzugefügt und das Problem besteht weiterhin: Das Fenster startet maximiert, aber der SSH-Shell-Text hat noch immer die Größe des Standardterminals.

Auch wenn ich einfach ein Terminal öffne und diesen Befehl oben eingebe, habe ich dasselbe Problem, als wenn ich es vom Unity-Launcher aus starte.

Irgendwelche Ideen, was die Ursache sein könnte und wie man das Problem beheben kann?

Antwort1

Verwenden Sie Folgendes oben in Ihrem Expect-Skript:

#trap sigwinch and pass it to the child we spawned
trap {
 set rows [stty rows]
 set cols [stty columns]
 stty rows $rows columns $cols < $spawn_out(slave,name)
} WINCH

Antwort2

eine bessere Möglichkeit, den gewünschten Effekt zu erzielen, ist die Verwendung von SSH-Schlüsseln wieEnzotibempfohlen.

Erste

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ ssh-keygen -t rsa

Drücken Sie bei jeder Eingabeaufforderung die Eingabetaste. Wenn Sie die Felder leer lassen, wird ein Standardschlüssel ohne Passwort erstellt. Das ist, was Sie wollen.

Als nächstes übertragen Sie den öffentlichen Schlüssel auf den Server.

$ ssh-copy-id [email protected]

Erstellen Sie abschließend einen Launcher mit dem Befehl:

gnome-terminal -t SSH1 -x ssh [email protected]

Antwort3

Dies hat mit der Umgebungsvariable zu tun, die Expect für Ihre Terminaleinstellungen verwendet.

Dies lässt sich leicht beheben, indem Sie am Anfang Ihres Expect-Skripts die folgende Zeile hinzufügen:

set ::env(TERM) vt100

Ich habe festgestellt, dass, wenn Sie farbige Zeichen haben. Wenn Sie farbige Zeichen sehen möchten, können Sie auch Folgendes versuchen:

set ::env(TERM) xterm

Antwort4

Fügen Sie Ihrem Code Folgendes hinzu:

trap {
    set XZ [stty rows   ]
    set YZ [stty columns]
    stty rows $XZ columns $YZ < $spawn_out(slave,name)
} WINCH

Dies scheint bei mir unter Ubuntu 17.10 zu funktionieren

verwandte Informationen