Tests connexions existantes

barnabe0057 Messages postés 17074 Statut Contributeur -  
Exileur Messages postés 1621 Statut Membre -
Bonjour,

Voilà le script en question : https://pastebin.com/uYzC6AtM

Le script récupère une adresse ip dans un pastebin puis teste si une connexion SSH existe, puis passe au pastebin suivant.

Si la connexion n'existe pas j'incrémente une variable $status (test à un instant T puis un autre test à T+30).

Si les 2 tests ont échoués (status=2), je supprime le pastebin.

Maintenant j'en viens à mon problème : si je dois traiter 10 pastebins je dois pour chacun attendre 30 secondes entre les 2 tests, j'aimerais traiter tous les pastebins d'un coup, puis 30 secondes plus tard les re-traiter tous.

Je pense qu'il me faudrait une variable $status personnalisée pour chaque pastebin, une variable avec un index, mais je ne sais pas faire ça.

Merci beaucoup pour l'aide apportée.



Configuration: Win 7 Pro SP1 64bits
Athlon X4 750K Quad Core
8 Go DDR3 1866 Mhz


1 réponse

Exileur Messages postés 1621 Statut Membre 150
 
Salut,

Je ferais qq chose du genre :
en début de code tu définis une liste qui servira a stocker les ips à retry;
list=

Ensuite quand tu fais ton premier test, en cas de fail, tu ajoutes l'ip à ta 'liste'
ss -nt4 | grep ":22 " | grep "$ip" || { status=$((status+1)) && list="${list} ${ip}"  } 

et tu refais une boucle aprés sur la liste.
for ip in $list; do ss -nt4 | grep ":22 " | grep "$ip" || { status=$((status+1)) && echo "Second test échoué"  }; done

0
barnabe0057 Messages postés 17074 Statut Contributeur 4 925
 
Merci pour ton aide, je vais tester cet après-midi.
0
Exileur Messages postés 1621 Statut Membre 150
 
sinon tu utilises les arrays :
list=()
ss -nt4 | grep ":22 " | grep "$ip" || { status=$((status+1)) && list+=($ip ) }
for ip in "${list[@]}"
do
echo $ip
done
0