2017-03-15 11 views
0

2つのホストにpingを実行し、ステータスに応じてコマンドを実行するスクリプトが必要です。2つのホストにpingを実行し、ステータスに基づいてコマンドを実行します。

#!/bin/bash 

HOSTS="1.1.1.1 2.2.2.2" 

for myHost in $HOSTS 
do 

fping $myHost > /tmp/ping.log 

if [ $(grep -c "1.1.1.1 is unreachable" "/tmp/echo.log") -eq 1 ]; then 
echo "1.1.1.1 is down" 

else 
if [ $(grep -c "2.2.2.2 is alive" "/tmp/echo.log") -eq 1 ]; then 
echo "2.2.2.2 is alive" 

fi 
fi 
done 

すなわち

、私は1.1.1.1が応答しないと2.2.2.2は、コマンドを実行しないと1.1.1.1応答と「2.2.2.2 doesnの場合はラウンドすなわち、他の方法であれば持っている必要があります次にコマンドを実行します。

答えて

1
HOSTS="127.0.0.1 227.1.2.3" 

RESULT="" 

for HOST in $HOSTS; do 
    if fping $HOST > /dev/null 2>&1; then 
     RESULT="${RESULT}1" 
    else 
     RESULT="${RESULT}0" 
    fi 
done 

echo "RESULT=$RESULT" 

case "$RESULT" in 

00) 
    echo "host 1 dead, host 2 dead" 
    ;; 

01) 
    echo "host 1 dead, host 2 alive" 
    ;; 


10) 
    echo "host 1 alive, host 2 dead" 
    ;; 


11) 
    echo "host 1 alive, host 2 alive" 
    ;; 
esac 

このスクリプトは、生きているホスト(1)または死んだホスト(0)のリストのバイナリステータスを作成します。ケースブロックでは、すべての可能な組み合わせを簡単に処理できます。

3番目のホストを宣伝すると、結果として「001」や「010」や「110」などが表示されます。

あなたはただ、私は多くのおかげで後のことでした正確に何が

*) 
    echo "don't care state of $RESULT detected" 
    ;; 
+0

であなたに反応し、それの残りの部分を処理したいものを追加し、すべての可能な組み合わせを追加する必要はありません。 – Lurch

関連する問題