我正在使用 Expect 從 Unity 啟動器自動登入 SSH,命令如下所示:
gnome-terminal -t SSH1 -e "expect -c 'spawn ssh [email protected] ; expect assword ; send \\"password123\\n\\" ; interact'"
這對於自動登入來說效果很好,但是如果我最大化 gnome-terminal 窗口,ssh shell 內容仍然較小,就好像窗口具有預設大小一樣,如下所示:
起初我以為這是因為 gnome-terminal 是以預設大小啟動的,當由於某種原因最大化時 ssh 的東西沒有調整大小,但後來我添加到gnome-terminal --window --maximize
命令中,同樣的問題仍然存在,視窗開始最大化但ssh shell 文字仍然是預設終端的大小。
另外,如果我只是打開一個終端並在頂部鍵入該命令,我會遇到與從 Unity 啟動器啟動它相同的問題。
有什麼想法可能導致此問題以及如何解決它嗎?
答案1
在您的期望腳本頂部使用以下內容:
#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
答案2
獲得所需效果的更好方法是使用 ssh 鍵,例如恩佐替布建議。
第一的
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ ssh-keygen -t rsa
在每次提示時按 Enter 鍵,將欄位留空將建立一個沒有密碼的預設金鑰。這就是你想要的。
接下來將公鑰推送到伺服器。
$ ssh-copy-id [email protected]
最後使用以下命令建立啟動器:
gnome-terminal -t SSH1 -x ssh [email protected]
答案3
這與 Expect 用於終端設定的環境變數有關。
透過將以下行新增至 Expect 腳本的開頭,可以輕鬆解決此問題:
set ::env(TERM) vt100
我發現如果你有任何彩色字元。如果你想看到彩色字符,你也可以嘗試:
set ::env(TERM) xterm
答案4
將其添加到您的程式碼中:
trap {
set XZ [stty rows ]
set YZ [stty columns]
stty rows $XZ columns $YZ < $spawn_out(slave,name)
} WINCH
這似乎在 Ubuntu 17.10 上對我有用