Il y a quelque temps, nous avons écrit un guide qui décrivait comment exécuter une seule commande sur plusieurs systèmes distants à la fois en utilisant PSSH dans les systèmes de type Unix. Aujourd'hui, nous allons discuter d'un outil similaire appelé DSH . Il signifie D distribué sh ell (ou coquille de danseur). En utilisant DSH, nous pouvons exécuter une commande linux sur plusieurs hôtes à la fois. C'est un utilitaire gratuit et open source écrit en C langage de programmation.
Installer DSH
Sur Arch Linux et dérivés :
DSH est disponible en AUR , vous pouvez donc l'installer à l'aide des assistants AUR, par exemple Yay , comme indiqué ci-dessous.
$ yay -S dsh
Sur Debian, Ubuntu :
DSH est disponible dans les dépôts officiels de Debian, Ubuntu et d'autres systèmes basés sur DEB tels que Linux Mint, Elementary OS. Pour l'installer DSH dans n'importe quel système basé sur DEB, exécutez :
$ sudo apt-get install dsh
Pour les autres distributions Linux, DSH peut être compilé et installé manuellement comme décrit ci-dessous.
DSH nécessite libdshconfig pour que cela fonctionne. Vous pouvez télécharger la dernière version de libdshconfig et dsh à partir de ce lien .
Une fois téléchargé, allez dans le répertoire où vous avez téléchargé les deux packages.
Commencez par compiler et installer libdshconfig à l'aide des commandes :
$ tar xfz libdshconfig*.tar.gz
$ cd libdshconfig-*
$ ./configure ; make
$ sudo make install
Ensuite, compilez et installez également dsh.
$ tar xfz dsh*.tar.gz
$ cd dsh-*
$ ./configure ; make
$ sudo make install
Configurer DSH
Nous avons installé dsh. Configurons maintenant DSH pour exécuter des commandes sur plusieurs hôtes. Pour ce faire, modifiez d'abord le fichier de configuration DSH et définissez la valeur du shell distant de rsh à ssh.
Sur Arch Linux et ses dérivés, le fichier de configuration par défaut est /etc/kgname/dsh.conf .
Modifiez ce fichier :
$ sudo vi /etc/kgname/dsh.conf
Changer remoteshell valeur de rsh à ssh .
#default configuration file for dsh. # suppled as part of dancer's shell verbose = 0 remoteshell =ssh showmachinenames = 0 waitshell=1 # whether to wait for execution #remoteshellopt=... # default config file end.
Sur les systèmes basés sur DEB :
$ sudo vi /etc/dsh/dsh.conf remoteshell =ssh
Sur les systèmes basés sur RPM :
$ sudo vi /usr/local/etc/dsh.conf remoteshell =ssh
Ensuite, nous devons ajouter les hôtes distants sur lesquels nous voulons exécuter les commandes.
Pour ce faire, créez/modifiez la machines.list fichier et ajoutez les hôtes distants.
Sur Arch Linux et dérivés :
$ sudo vi /etc/kgname/machines.list
Ajoutez l'adresse IP ou le nom d'hôte de l'hôte distant un par un, comme indiqué ci-dessous.
192.168.43.100 192.168.43.101
Sur les systèmes basés sur DEB :
$ sudo vi /etc/dsh/machines.list 192.168.43.100 192.168.43.101
Sur les systèmes basés sur RPM :
$ sudo vi /usr/local/etc/machines.list 192.168.43.100 192.168.43.101
Vous pouvez ajouter n'importe quel nombre d'hôtes distants dans machines.list fichier.
Exécuter une commande Linux sur plusieurs hôtes à la fois à l'aide de DSH
Une fois que vous avez ajouté tous les hôtes distants et créé un utilisateur commun sur tous vos systèmes distants, vous pouvez exécuter la commande Linux sur tous les hôtes distants à la fois. Disons par exemple, la commande suivante exécutera le uname -r commande sur tous les hôtes distants à la fois.
$ dsh -a -c uname -r
Il vous demandera d'entrer le nom d'utilisateur et le mot de passe de l'hôte distant respectif. Si vous ne souhaitez pas entrer les informations d'identification de l'utilisateur à chaque fois que vous exécutez cette commande, il vous suffit de configurer la connexion SSH sans mot de passe .
Exemple de résultat :
3.10.0-514.16.1.el7.x86_64 4.4.0-34-generic
Comme vous le voyez dans la sortie ci-dessus, l'utilitaire dsh affiche la version du noyau de mes deux hôtes distants.
Pour plus de détails, reportez-vous à la page de manuel.
$ man dsh
Suggestion de lecture :
- Exécuter des commandes sur des systèmes Linux distants via SSH