ssh条件が完了せず、whileループを終了する場合[重複]

ssh条件が完了せず、whileループを終了する場合[重複]

AIX には、os_init.d ディレクトリーからすべてのホストを読み取り、Ipv4 IP を収集してファイルに保管するスクリプトがあります。その後、このファイルはSSHを介して各ホストに接続し、異なるスクリプトを介してさまざまなデータを収集するために使用されます(ここでは関係ありません)。

  1. ホストに接続できず、IPv4 IPアドレスがある場合 - >ループの継続中にエラーなし
  2. ホストに接続できず、IPv6 IP アドレスがある場合 --> ループの継続中にエラーなし
  3. ホストに接続でき、IPv6 IPアドレスがある場合、--> whileループは続行されますが、ループを介さずに存在します。

最後の条件で到達可能なIPv6ホストのif条件を正常に実行した後、whileループが継続せず終了する理由がわからないようです。

#!/usr/bin/bash
# Sumit Das 2016 12 26
# Find All PHYsical HOSTs and their IP in a cluster

#set -x
#cd /home/users/in10c2/moni
ls -1 /cAppCom/os_init.d | grep dcpaix > listPHYSERV
FN='listPHYSERV'
rm listPHYIP 2> /dev/null
while read LINE
do
  PHYHOST=$LINE
  PHYHOSTIP=`ping -c 1 $LINE | grep PING | awk '{print $3}' | cut -c2- | rev | cut -c3- | rev`

  IPV6IPchk=`echo $PHYHOSTIP | cut -c -4`
  if [ $IPV6IPchk = "2a00" ] 
    then 
    ssh -q -o ConnectTimeout=10 -o BatchMode=yes -o StrictHostKeyChecking=no $LINE ifconfig -a > IFCNF 
    PHYHOSTIP=`awk '/en2:/{x=NR+1;next}(NR<=x){print}' IFCNF | awk '{print $2}'` 
    rm IFCNF
  fi

  echo "$PHYHOST,$PHYHOSTIP" >> listPHYIP
done < $FN

cat listPHYIP
cp  ALL_PHY_HOSTIP_`uname -n`.txt

答え1

それssh -n以外の場合、成功するsshと標準入力が消費され、whileループに読み取る内容はありません。

関連情報