使用“expect”啟動的 SSH shell 沒有全寬。我該如何修復它?

使用“expect”啟動的 SSH shell 沒有全寬。我該如何修復它?

我正在使用 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 上對我有用

相關內容