我正在编写一个 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);
解决了我遇到的问题。