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:
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 --maximize
zum 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