Apprenez à exécuter la même commande/répétitive sur plusieurs serveurs Linux à partir de la machine Windows. Cette astuce utilise l'utilitaire de ligne de commande "plink".
L'une des principales préoccupations de sysadmin est d'exécuter la même commande/répétitive sur plusieurs serveurs Linux en infra lorsqu'il n'y a pas d'outil centralisé disponible. Dans cet article, nous allons voir comment exécuter une commande sur plusieurs serveurs Linux en une seule fois. Il n'est pas nécessaire d'enregistrer le mot de passe de votre compte nulle part et même pas besoin d'avoir expect
fonction dans votre machine source !
Pré-requis
- Machine Windows sur laquelle plink a été téléchargé (téléchargez plink ici)
- Les serveurs Linux doivent être accessibles depuis une machine Windows
Comment procéder
plink est un utilitaire de ligne de commande mastic. En utilisant plink, nous pourrons nous connecter au serveur en fournissant l'adresse IP, le nom d'utilisateur et le mot de passe sur la ligne de commande. plink peut être invoqué à partir d'une invite de commande sous Windows.
C:\Users\noname\Desktop>plink -ssh [email protected] -pw password@123 (hostname; date) testserver Tue Nov 1 12:54:33 IST 2016 C:\Users\noname\Desktop>
Accédez à l'invite de commande Windows en tapant cmd
dans une fenêtre d'exécution (touche windows + r). Accédez au dossier où l'exécutable plink est conservé, puis tapez la commande plink comme ci-dessus.
- ssh :protocole pour se connecter
- ID@IP du serveur
- pw :mot de passe du compte
- Commandes à exécuter sur le serveur Linux entre accolades.
C'est ainsi que fonctionne plink. Maintenant, pour exécuter la même commande sur plusieurs serveurs, nous voyons l'exemple ci-dessous. Nous allons nous connecter à 3 serveurs et exécuter la commande hostname &date.
Tout d'abord, mettez les 3 adresses IP du serveur dans un seul fichier ip_list.txt
. Ensuite, exécutez une simple boucle for sur ce fichier comme ci-dessous dans l'invite de commande. Il s'agit d'un script batch très basique.
C:\Users\noname\Desktop>FOR /F "tokens=1,2* delims=," %G IN (C:\Users\noname\Desktop\ip_list.txt) DO plink -ssh user1@%G -pw password@123 (hostname; date) testserver Tue Nov 1 12:54:33 IST 2016 testserver1 Tue Nov 1 12:54:36 IST 2016 testserver2 Tue Nov 1 12:54:39 IST 2016 C:\Users\noname\Desktop>
Voilà! toutes les sorties de commande du serveur sont là ! Commandes exécutées sur tous les serveurs en une seule fois.
Ceci est très utile lorsque vous devez vérifier certaines sorties de ligne de tous les serveurs ou si vous souhaitez exécuter des commandes d'actualisation de compte sur tous les serveurs en une seule fois.