0

タイトルが少しわかりにくいですが、これが私の状況です

#!/bin/bash
for node in `cat path/to/node.list`
do
        echo "Checking node: $node" 
        ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no me@$node "nohup  scriptXYZ.sh"
done

基本的に scriptXYZ には出力があります。次のようなもの:Node bla is Up またはNode bla is Down. 次の疑似コードに相当する何かをしたい:

if (output_from_scriptXYZ == "Node bla is Up")
    do this
else 
    do that

これをオンラインで行う方法を見つけようとしましたが、これを行う方法が見つかりませんでした。繰り返しますが、私は自分が何を探しているのかわからないかもしれません。

また、おまけとして: scriptXYZ の実行中にエラーが発生したかどうかを確認する方法はありますか? 「ファイルが存在しません」のようなもの - スクリプト自体ではなく、スクリプトが実行しようとしたため、エラーが発生しました。

4

1 に答える 1

1

まず、scriptXYZ.shノードが稼働している場合は0で終了し、それ以外の場合はゼロ以外で終了することは可能ですか?次に、出力をキャプチャする代わりに、次のことを実行できます。スクリプトの標準出力と標準エラーはローカル端末に接続されるため、ローカルで実行した場合と同じように表示されます。

#!/bin/bash
while read -r node; do
    echo "Checking node: $node" 

    if ssh -o UserKnownHostsFile=/dev/null \
           -o StrictHostKeyChecking=no me@$node scriptXYZ.sh; then
       do something
    else
       do something else
    fi
done < path/to/node.list

nohup結果をローカルホストに送り返すには接続を維持する必要があるため、でスクリプトを実行することは実際には意味がありません。

于 2012-09-18T20:36:39.243 に答える