我看到了这个链接:从Bash调用的Expect脚本的退出状态代码,但它对我没有帮助。当我想从远程运行的命令中获得退出状态代码时,我看到了Net::SSH::Expect 0.08的cpan文档,它有"collect_Exit_code"one_answers"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。
提前谢谢。
您是否尝试调用底层期望对象?
$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。