Assignement de variable en background ?
Bonjour,
Je voudrais faire un test pour evaluer si les serveurs sont en ligne. Voici mon script :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #! /bin/sh
timeout=5
#do the ssh test with timeout
for i in 01 02 $(seq -w 5 20);
do
j=$(echo $i|sed 's/^0*//') #remove leading 0 so that index is not octal based
echo $i;
ssh_test[$j]=$(ssh -o ConnectTimeout=$timeout n00$i "echo 1" 2> /dev/null) & # <== ICI LE PROBLEME
done
wait
# print the results in correct order
for i in 01 02 $(seq -w 5 20);
do
j=$(echo $i|sed 's/^0*//') #remove leading 0 so that index is not octal based
echo $i $j ${ssh_test[$j]}
if [[ ${ssh_test[$j]} == 1* ]] ;
then echo -e "$i: \e[1;32mok\e[0m";
else echo -e "$i: \e[1;31mfailed\e[0m";
fi;
done |
Mais je n'arrive pas a rouler les commandes en arrière plan de sorte que ca n'attendent que 5 secondes, soit le resultats de toutes les requetes en meme temps. Mon script fonctionne si je retire le esperluette de l'assignation de la variable.
Sauriez vous faire cette assignation en parrallele ?
Merci
Z.