Bonjour,
Je voudrais faire un test pour evaluer si les serveurs sont en ligne. Voici mon script :
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.
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
Sauriez vous faire cette assignation en parrallele ?
Merci
Z.
Partager