Я использую модуль Expect в Perl для выполнения интерактивного действия и выполнения команды на удаленной машине. Прошу вашей помощи в этом
Вот шаги, которые я использовал
Сделайте переключение пользователя на другую учетную запись. Отправляет пароль для входа. Как только я получу оболочку для нового пользователя, выполните команду ssh для подключения к удаленной машине.
Затем я хочу выполнить команду на этой удаленной машине и получить ее ответ. Я могу выполнить команду на удаленной машине. Я тоже вижу результат на своем терминале. Но я не могу зафиксировать его в переменной, чтобы сравнить его со значением.
use Expect;
my $exp = Expect->new;
$exp->raw_pty(1);
$exp->spawn('su - crazy_user') or die "Cannot spawn switch user cmd: $!\n"
$exp->expect($timeout,
[ qr/Password:/i,
sub { my $self = shift;
$self->send("$passwd\n");
exp_continue;
}],
[ qr/\-bash\-4.1\$/i,
sub { my $self = shift;
$self->send("ssh $REMOTE_MACHINE\n");
$self->send("$COMMAND1\n");
exp_continue;
}]
);
$exp->soft_close();
Как я могу получить результат $COMMAND1
, который я выполнил на удаленной машине через $self->send("$COMMAND1\n")
?