GNU/Linux >> Tutoriels Linux >  >> Linux

DSH - Exécutez une commande Linux sur plusieurs hôtes à la fois

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

Linux
  1. Ssh vers plusieurs hôtes et exécuter une commande ?

  2. Exécutez la commande sur plusieurs serveurs Linux à partir de Windows

  3. uptime Exemples de commandes sous Linux

  4. linux :comment exécuter une commande dans un répertoire donné

  5. Exécutez la commande cd en tant que superutilisateur sous Linux

Comment exécuter une commande pendant une durée spécifique sous Linux

Comment exécuter plusieurs commandes Linux en une seule commande

11 Exemples de commandes de date Linux utiles

Comment exécuter plusieurs commandes Linux à la fois dans le terminal Linux

Linux date Exemples de commandes

Comprendre la commande time sous Linux