Bonjour

Je suis en train de concevoir un script de connexion à plusieurs serveurs linux depuis une machine linux du même réseau (très sécurisé).
Je ne peux pas générer de clés ssh sur les serveurs, donc j'ai choisi plink, qui me permet de passer un mot de passe en paramètres.

Et là je bute depuis un moment sur un souci avec la commande plink dans une boucle while.

J'ai pour l'instant 3 fichiers côtes à côtes:

1) Un fichier CSV (base de données pour plink, 1ligne=1serveur) structuré ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
nomcomplet1;password1:adresseip1
nomcomplet2;password2:adresseip2
nomcomplet3;password3:adresseip3
...
2) Un fichier COMMANDES (que plink doit exécuter sur chaque serveur) structuré ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
if argument
then
commande1
else
commande2
fi
3) Et enfin le SCRIPT proprement dit, structuré ainsi:
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
#DEFINITION DES VARIABLES GLOBALES
csv=/chemin/fichier.csv
log=/chemin/log.txt
commandes=/chemin/commandes.txt
 
#SUPPRESSION DU LOG PRECEDENT
rm -f $log
 
#RECUPERATION DES VARIABLES CONTENUES DANS LE FICHIER CSV + BOUCLE DE CONNEXION AUX SERVEURS
while read line
do
nom=`echo $line | cut -d';' -f1`
pass=`echo $line | cut -d';' -f2`
ip=`echo $line | cut -d';' -f3`
echo -n $nom"-" >>$log
plink root@$ip -pw $pass -batch -m $commandes >>$log
done <$csv
exit
Pour l'instant je veux juste récupérer toutes les variables de chaque ligne pour exécuter mes plink autant de fois qu'il y a de lignes (puisque 1ligne=1serveur).

Le problème est que logué en root, lorsque je lance le script tel quel, seule la 1e ligne du fichier CSV est lue.
Le log obtenu juste pour cette ligne est correct, mais le script me rend la main sans aller lire les lignes suivantes comme si après l'exécution du 1er plink, la boucle était interrompue.

D'ailleurs si je remplace ma commande plink par un simple echo des variables, j'ai bien les valeurs propres à chaque connection qui viennent s'afficher ligne après ligne...
J'ai également essayé avec une boucle for, même constat: echo boucle mais plink rompt la boucle.

Quelqu'un aurait-il une idée d'où vient le souci?