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루프에는 읽을 내용이 없습니다.

관련 정보