我在 Perl 中使用 Expect 模块来执行交互式活动并在远程机器上执行命令。请求您的帮助
这是我使用的步骤
将用户切换到另一个帐户。发送密码登录。获得新用户的 shell 后,执行 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")
?