Dsh - Shell ditribué
Par Administrateur le jeudi, juin 14 2007, 18:40 - Lien permanent
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