使用“expect”启动的 SSH shell 没有全宽。我怎样才能修复它?

nir*_*gxx 5 ssh command-line unity gnome-terminal window-management

我正在使用 expect 从 Unity 启动器自动登录 SSH,命令如下所示:

gnome-terminal -t SSH1 -e "expect -c 'spawn ssh root@111.222.333.255 ; expect assword ; send \\"password123\\n\\" ; interact'"
Run Code Online (Sandbox Code Playgroud)

这适用于自动登录,但如果我最大化 gnome-terminal 窗口,ssh shell 内容会保持较小,就像窗口具有默认大小一样,如下所示:

截屏

起初我以为是因为 gnome-terminal 以默认大小启动,并且由于某种原因最大化时 ssh 内容没有调整大小,但后来我添加gnome-terminal --window --maximize到命令中,同样的问题仍然存在,窗口开始最大化但是 ssh shell 文本仍然是默认终端的大小。

此外,如果我只是打开一个终端并在顶部输入该命令,我会遇到与从 Unity 启动器启动它相同的问题。

任何想法可能导致这种情况以及如何解决它?

小智 4

在您的期望脚本顶部使用以下内容:

#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
Run Code Online (Sandbox Code Playgroud)


Smi*_*max 1

获得所需效果的更好方法是使用enzotib建议的 ssh 密钥。

第一的

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ ssh-keygen -t rsa
Run Code Online (Sandbox Code Playgroud)

在每次提示时按 Enter 键,将字段留空将创建一个没有密码的默认密钥。这就是你想要的。

接下来将公钥推送到服务器。

$ ssh-copy-id root@111.222.333.255
Run Code Online (Sandbox Code Playgroud)

最后使用以下命令创建启动器:

gnome-terminal -t SSH1 -x ssh root@111.222.333.255
Run Code Online (Sandbox Code Playgroud)