forループbashスクリプトの2つのif条件

forループbashスクリプトの2つのif条件

forループに2つのif条件を作成しようとしています。可能ですか?これで、2番目のものは何も返されず、1if番目の場合は2つだけが返されます。OKif

#!/bin/bash
servers=("212.39.82.157" "212.39.82.157" "1.1.1.1")

for i in "${servers[@]}"; do

ping -c 1 $i > /dev/null 
  if [ $? -eq 0 ]; then
     echo "OK"  
  fi

  if [ $(netstat -na | grep ':3708' | grep ESTABLISH | wc -l) -eq 2 ]; then
     echo "NOT - OK"
  fi
done

IPリストの3番目の項目はNOT - OKオンラインではないため、返す必要があります。しかし、出力は次のようになります

root@ubuntu:~$ ./check.sh
OK
OK
root@ubuntu:~$

私がここで何を見逃しているのでしょうか?

修正する:

 #!/bin/bash
servers=("212.39.82.157" "212.39.82.157" "1.1.1.1")

for i in "${servers[@]}"; do

ping -c 1 $i > /dev/null 
  if [ $? -eq 0 ]; then
     echo "OK"  
  fi
done
  if [ $(netstat -na | grep ':3708' | grep ESTABLISH | wc -l) -eq 0 ]; then
     echo "NOT - OK"
  fi

forループの外に置くと確実に動作しますか?

ベストアンサー1

たとえば、ホスト、IPアドレスをファイルに入力します。

hosts.txt次の内容が含まれています

212.39.82.157 
212.39.82.155 
1.1.1.1
22.22.22.22

スクリプトを作成します。

#!/bin/bash

ping_hosts(){
echo
echo "*** Ping all hosts ***"
echo "--------------------------------------------"

count1=0
count2=0
start=$(date +"%d-%m-%Y-%T")

hosts=( 1.1.1.1 2.3.3.4 4.5.6.6 )

while read -r line
do
#PING=`ping -s 64 $line -c 1 | grep packet | awk '{print $(NF-2)}'`
PING=$(ping -s 64 $line -c 1 | grep packet | awk '{print $(NF-4)}')

if [[ "$PING" == "0%" ]]; then
count1=$((count1 + 1))
printf '%s\n' "$line UP" 
else
count2=$((count2 + 1))
printf '%s\n\n' "$line DOWN"
fi
done < <( printf '%s\n' "${hosts[@]}")

end=$(date +"%d-%m-%Y-%T")

printf '%s\n' "Start:$start"
printf '%s\n\n' "End**:$end"
printf '%s\n' "$count1 hosts UP and $count2 hosts down"

}
ping_hosts

それでは、スクリプトを実行可能にして実行してみてください。たぶん意図した目的を失うかもしれません。ただ共有したかったです。

答えを更新してください

#!/bin/bash
servers=("212.39.82.157" "212.39.82.157" "1.1.1.1")

for i in "${servers[@]}"; do

ping -c 1 $i > /dev/null 
  if [ $? -eq 0 ]; then
     echo "OK"  
  elif [ $(netstat -na | grep ':3708' | grep ESTABLISH | wc -l) -eq 0 ]; then
     echo "NOT - OK"
  fi
done

ちなみに、あなたのスクリプトはbash構文の面で正しく書かれていません。

おすすめ記事