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.
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].
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
Tags ssh shell-script