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:
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 nomcomplet1;password1:adresseip1 nomcomplet2;password2:adresseip2 nomcomplet3;password3:adresseip3 ...
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 if argument then commande1 else commande2 fi
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).
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
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?






Répondre avec citation
Partager