【发布时间】:2014-11-13 12:15:07
【问题描述】:
我在 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();
如何获得我在远程机器上通过$self->send("$COMMAND1\n") 执行的$COMMAND1 的结果?
【问题讨论】:
-
使用Net::OpenSSH!