Я пишу инструмент развертывания виртуальных машин, необходимый для запуска виртуальных машин на сервере ESXi. Для этого я использую модуль Perl Expect, чтобы создать ssh-клиент для подключения к серверу и использовать vim-cmd для управления виртуальной машиной.
Когда я это сделаю, я увижу, что соединение и аутентификация прошли успешно (то есть будет показано приглашение пароля, пароль будет принят, а затем будет возвращено приглашение.
Сразу после этого клиентский процесс ssh выводит сообщение «Подключение к xxxx закрыто», и мой скрипт останавливается.
Оказывается, я устанавливал raw_pty (1) в ожидаемом сеансе:
my $exp = new Expect();
$exp->raw_pty(1);
$exp->spawn("ssh", "$args{username}\@$server");
Raw_pty не понравился серверу ESXi, и он немедленно закрыл соединение. Удаление строки:
$exp->raw_pty(1);
исправил мою проблему.