2016-04-13 1 views
-1

私のコマンドを実行するには2台のマシンが機能し、1台のマシンがスリープしていることを確認する必要があります。ここでロジック:コマンドを実行する条件として複数のpingを持つスクリプトを書くには?

#!/bin/bash 
ping1=$(192.168.2.15) 
ping2=$(192.168.2.15) 
ping3=$(192.168.2.21) 

if [ $ping1 = OK ] && [ $ping2 = OK ] && [ $ping3 = failure ] 
then run_command 
elif [ ping1 = OK ] && [ ping2 = OK ] && [ ping3 = OK ] 
then echo 'machine 3 already running' 
fi 

私は[i]で何を書かなければならないのか分からないので、構文が悪いと知っていますか?

答えて

3

シェルコマンドの戻りステータスは$?であり、成功した場合は0、それ以外の場合はpingが返されますので、その点についてもテストしてください。

我々は状況をこのように取得することができます:-c 1は一つだけリクエストを送信するには、pingを教えてくれます

ping -c 1 192.168.2.15; ping1=$? 
ping -c 1 192.168.2.17; ping2=$? 
ping -c 1 192.168.2.21; ping3=$? 

を。

その後、我々は数値比較使用して値をテストすることができます:ところで

if [ $ping1 -eq 0 ] && [ $ping2 -eq 0 ] && [ $ping3 -ne 0 ] 

を、私はこのフォームにご希望のテストを考慮します:

if ping1 && ping2 then 
    if ping3 then 

    else #(if ! ping3) 

    fi 
fi 
関連する問題