AIX には、os_init.d ディレクトリーからすべてのホストを読み取り、Ipv4 IP を収集してファイルに保管するスクリプトがあります。その後、このファイルはSSHを介して各ホストに接続し、異なるスクリプトを介してさまざまなデータを収集するために使用されます(ここでは関係ありません)。
- ホストに接続できず、IPv4 IPアドレスがある場合 - >ループの継続中にエラーなし
- ホストに接続できず、IPv6 IP アドレスがある場合 --> ループの継続中にエラーなし
- ホストに接続でき、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
ループに読み取る内容はありません。