リモートシェルの終了ステータス確認する方法のメモ

rshを利用してリモートホスト上のシェルスクリプトを実行すると、シェルスクリプトの成功・失敗にかかわらず終了ステータスはrst/sshの終了ステータスが返る。たとえば、リモートシェルが失敗した場合でも、通信が成功すると、終了ステータスは成功となる。

たとえは、これだと終了ステータスは正常終了の0がかえる。

#!/bin/bash
rsh tsu-nera@192.168.118.129 fail_shell
echo "$?"

こんなときは、コマンド実行結果をローカルファイルにリダイレクトして、その中身を見てみるとよい。ローカル側で $? が解釈されないように$?とする必要があることに注意。

#!/bin/bash

リモートシェル実行

rsh tsu-nera@192.168.118.129 ”~/bin/fail_shell;echo $?” > tmp

ファイル出力から変数に代入

tail -n 1 tmp >> tmp2; rm tmp read RESULT < tmp2; rm tmp2

 結果判定

if [ $RESULT -eq 0 ]; then echo “Shell Sucess” exit 0 else echo “Shell failed” exit 1 fi

もっとシンプルな書き方がある気がする。。。