1

このリンクに出くわしました: Bash から呼び出された Expect スクリプトの終了ステータス コードですが、役に立ちませんでした。リモートで実行されるコマンドから終了ステータス コードを取得しようとしていたときに、"collect_exit_code" および "last_exit_code" メソッドを持つ Net::SSH::Expect 0.08 の cpan ドキュメントに出会いました。現在使用していますが、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... };

他に何も役に立たない場合は、コマンドを実行し、stderr で終了ステータスを報告する小さなシェル スクリプトを作成できます。

于 2012-09-05T10:13:51.560 に答える