Podría ser mejor ordenar primero su lista de IP y luego iterar sobre ella:
mapfile ipaddresses < ip.txt
canary=alive
while [[ "alive" == "$canary" ]]; do
canary=dead
for ip in ${ipaddresses[@]}; do
if ssh ubuntu@$ip "pgrep -f pattern"; then
echo "Process is running on $ip"
canary=alive
sleep 10
continue
else
echo "Process not running on $ip"
fi
done
done
Si todavía está atascado en una versión de bash
inferior a 4, reemplace el comando mapfile
con:
read -r ipaddresses <<< "$( cat ip.txt )"