se a condição com ssh sair enquanto loop sem conclusão [duplicado]

0

Eu tenho um script no AIX para ler todos os hosts do diretório os_init.d e reunir seus Ipv4 IPs e armazená-los em um arquivo. Este arquivo é então usado para o ssh em cada host para coletar vários dados através de outros scripts [não relevantes aqui].

  1. Quando o host não está acessível e tem endereço IP IPv4 - > sem erro, enquanto o loop continua
  2. Quando o host não está acessível e tem endereço IP IPv6 - > sem erro, enquanto o loop continua
  3. Quando o host é acessível e tem endereço IP IPv6 - > while loop continua, mas existe sem passar pelo loop.

Não consigo descobrir por que na última condição, depois de executar com sucesso a condição if para um host IPv6 acessível, o loop while sairia sem continuação.

#!/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
    
por RustyNails 27.12.2016 / 21:44

1 resposta

5

Você precisa usar ssh -n , caso contrário, um ssh bem-sucedido consome a entrada padrão e seu loop while fica sem nada para ler.

    
por 27.12.2016 / 22:07