1

我遇到了这个链接:Exit status code for Expect script called from Bash但它对我没有帮助。当我希望从远程运行的命令中获取退出状态代码时,我遇到了 Net::SSH::Expect 0.08 的 cpan 文档,其中包含“collect_exit_code”和“last_exit_code”方法,这正是我想要的今天使用,但是,运行 1.09 时我无法找到合适的替代品。

我想保持简单,例如:

$ssh_devel_exp->collect_exit_code(1);
$ssh_devel_exp->send("sudo make");
if ($ssh_devel_exp->last_exit_code()) { etc. and so forth... };

但是,在没有类似这些方法的情况下,通过 Net Expect 运行命令时,我想不出一种简单的方法来获取退出状态。

我不相信切换到 Fabric 是解决这个问题的方法;这是一个 perl 应用程序,我需要坚持使用 Perl。

提前致谢。

4

1 回答 1

0

您是否尝试调用底层的期望对象?

$ssh_devel_exp->{expect}->collect_exit_code(1);
$ssh_devel_exp->send("sudo make");
if ($ssh_devel_exp->{expect}->last_exit_code()) { etc. and so forth... };

如果没有其他帮助,您可以创建一个小的 shell 脚本来执行您的命令并在 stderr 上报告退出状态。

于 2012-09-05T10:13:51.560 回答