Назад | Перейти на главную страницу

SSH к серверу ESXi с Expect немедленно закрывается

Я пишу инструмент развертывания виртуальных машин, необходимый для запуска виртуальных машин на сервере 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);

исправил мою проблему.