Macsim's Mind

Dsh – Shell ditribué

terminal tilda
Si vous avez plusieurs machines ubuntu sur votre réseau, et que vous devez faire des taches répétitives sur ces machines, dsh va bien vous aider.
Dsh (Distributed SHell ou Dancer’s SHell) permet de lancer une commande sur une/des machines ou encore mieux des groupes de machines.

Prenons un exemple concret nous avons dix machines a administrer cinq ubuntu-serveur cinq ubuntu-desktop, nous voulons facilement mettre à jours les dix machines et pour les serveurs nous voulons recevoir un logwatch de temps en temps.

Premièrement nous installons ssh sur les machines.

sudo aptitude install ssh

puis dsh sur notre machine

sudo aptitude install dsh

On génère une clé ssh sur notre machine (vous n’avez pas envie de taper votre mot de passe 10 fois quand même ;) )

ssh-keygen

On obtient quelque chose comme ça.

Generating public/private rsa key pair.
Enter file in which to save the key (/home/macsim/.ssh/id_rsa): (on appuye sur entré)
Enter passphrase (empty for no passphrase): ( on tape notre passphrase, la plus longue possible)
Enter same passphrase again: (on la retape pour être sur)
Your identification has been saved in /home/macsim/.ssh/id_rsa.
Your public key has been saved in /home/macsim/.ssh/id_rsa.pub.
The key fingerprint is:
13:b3:4c:ed:5c:bc:c2:e8:1c:a4:e7:XX:XX:XX:XX:XX macsim@leonidas

Bon maintenant on va diffuser notre clé publique sur nos machines.

ssh-copy-id -i ~/.ssh/id_rsa.pub IP_MACHINE_1
ssh-copy-id -i ~/.ssh/id_rsa.pub IP_MACHINE_2


ssh-copy-id -i ~/.ssh/id_rsa.pub IP_MACHINE_10

Maintenant si nous essayons de nous connecter sur une des machines ssh nous demande notre passphrase plutôt que notre mot de passe.

Bon vous n’avez pas envie de taper votre passphrase dix fois non plus donc on va la taper une bonne fois pour toute au démarrage de notre session.
On va dans Système-> Préférence -> Sessions

On fait Nouveau
On remplit Nom: avec Ssh Passphrase
et commande avec ssh-add ~/.ssh/id_rsa < /dev/null

Au démarrage de gnome il vous sera demandé de taper votre passphrase et elle sera valide pour la durée de votre session.

Pour voir si tout à bien fonctionné on se connecte en ssh normalement aucun mot de passe nous est demandé.

Bon c’est la que dsh interviend ;)

Dans /etc/dsh nous avons 2 fichiers de configurations:

- dsh.conf

verbose = 0 (je vous conseil de laisser 0)
remoteshell = rsh (on laisse comme ça)
showmachinenames = 0 (permet d’afficher le nom des machines)

- machines.list

Ce fichier contient nos machines
par default il y a localhost que je vous conseil de retirer sauf si vous voulez faire partie du groupe de machine.
a la place on met les ip des machines/nom dns que l’on administre
dans notre cas on aura quelque chose comme:

192.168.1.10
192.168.1.11

192.168.1.19

Maintenant nous avons le dossier group

Dans ce dossier par default il y a all qui est un lien vers /etc/dsh/machines.list
Nous créons un fichier que nous appellerons serveurs et qui contiendra les ip ou nom dns de nos serveurs.
Ensuite nous créons un fichier que nous appellerons desktop qui contiendra les ip ou nom des postes desktop.

Donc pour serveurs nous aurons quelque chose comme ceci:

192.168.1.10
192.168.1.11
serveur3
serveur4
192.168.1.14

et pour desktop

192.168.1.15
desktop2
192.168.1.17
desktop4
192.168.1.19

Maintenant si nous voulons lancer une commande sur tous les postes nous tapons:

dsh -g all NOTRECOMMANDE

si nous voulons lancer une commande sur tous les serveurs:

dsh -g serveurs NOTRECOMMANDE

si nous voulons lancer une commande sur tous les postes clients

dsh -g desktop NOTRECOMMANDE

pour compléter l’exemple pris au début nous pourrions lancer tous les matins
La mise à jour du parc

dsh -g all aptitude dist-upgrade (a condition d’avoir utiliser le compte root c’est pas tiptop comme méthode)

Le logwatch des serveurs

dsh -g serveurs logwatch –mailto mon@address.mail

Voilà amusez vous bien

VN:F [1.8.4_1055]
Rating: 0.0/10 (0 votes cast)

7 commentaires

  • At 2007.06.14 22:41, ju. said:

    Hyper interessant ce dsh, j’utiliser shmux (qui en plus d’avoir un nom ridicule n’est pas libre, l’alternative me convient parfaitement merci.

    <<dsh -g all aptitude dist-upgrade (a condition d’avoir utiliser le compte root c’est pas tiptop comme méthode)>>

    A mon avis tu devrais lancer un visudo et permettre aux membres du groupe wheel de lancer ALL sans demande de password (tu t’y ajoutes, si ce n’est deja fait)
    Ta commande deviendrait :

    dsh -g all sudo aptitude dist-upgrade

    • At 2007.06.15 00:28, macsim said:

      merci ju, en effet ta solution est intéressante, j’avais pensais à bloquer sshd sur les passphrase only, je vais creser la question et je posterais les solutions que je trouve ;)

      • At 2007.06.15 00:32, neoraptor said:

        Est-il possible de lancer une application répartie sur les différents postes connectés (pour un rip d’un DVD par exemple)?
        Merci dans tous les cas pour ton tutoriel.

        • At 2007.06.15 08:48, macsim said:

          Neoraptor,

          Oui c’est possible ça s’appelle le clustering, j’ai déjà fait ça sur debian mais j’ai pas essayé sur ubuntu je vais regarder à ça et je poste un truc ;)

          • At 2007.06.15 12:22, 3co said:

            Mortel!! merci ça va trop me faciliter la vie !
            Tes articles sont super interessants !

            • At 2007.06.22 17:09, Ju (pas le même) said:

              Perso, je préfère utiliser cssh (clusterssh dans les dépôts debian/ubuntu) …
              dsh est interessant pour gérer un très grand nombre de machines … mais tant que ça reste en dessous de la 20taine, la souplesse de cssh est très interessante

              • At 2007.08.20 22:01, Naji said:

                > remoteshell = rsh (on laisse comme ça)

                À mon avis, il vaut mieux remplacer rsh par ssh…

                (Required)
                (Required, will not be published)
                Uses wordpress plugins developed by www.wpdevelop.com