Tests connexions existantes

Fermé
barnabe0057 Messages postés 14452 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 3 août 2024 - Modifié le 31 août 2019 à 23:57
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 - 1 sept. 2019 à 09:29
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 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
1 sept. 2019 à 09:01
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 14452 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 3 août 2024 4 917
1 sept. 2019 à 09:22
Merci pour ton aide, je vais tester cet après-midi.
0
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
1 sept. 2019 à 09:29
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