Bonjour,
Je voudrais faire un test pour evaluer si les serveurs sont en ligne. Voici mon script :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.