我遇到了这个链接: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。
提前致谢。
答案 0 :(得分: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上报告exitstatus。