使用 Expect 通过 SSH 连接到 ESXi 服务器会立即关闭

使用 Expect 通过 SSH 连接到 ESXi 服务器会立即关闭

我正在编写一个 VM 部署工具,需要在 ESXi 服务器上启动 VM。为此,我使用 Perl 的 Expect 模块生成一个 ssh 客户端来连接到服务器并使用 vim-cmd 来管理 VM。

当我这样做时,我会看到连接和身份验证成功(即,将显示密码提示,接受密码,然后返回提示。

此后,ssh 客户端进程立即输出“与 xxxx 的连接已关闭”,并且我的脚本停止。

答案1

事实证明我在预期会话中设置了“raw_pty(1)”:

  my $exp = new Expect();
  $exp->raw_pty(1);

  $exp->spawn("ssh", "$args{username}\@$server");

ESXi 服务器不喜欢 raw_pty,因此它立即关闭了连接。删除以下行:

  $exp->raw_pty(1);

解决了我遇到的问题。

相关内容