tuto:linux:envoyer_les_memes_commandes_sur_plusieurs_serveurs_ssh
Différences
Ci-dessous, les différences entre deux révisions de la page.
| tuto:linux:envoyer_les_memes_commandes_sur_plusieurs_serveurs_ssh [2009/03/15 12:09] – créée root | tuto:linux:envoyer_les_memes_commandes_sur_plusieurs_serveurs_ssh [2009/03/15 12:09] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| source : [[http:// | source : [[http:// | ||
| - | === Konsole et dsh, les ancêtres === | + | ===== Konsole et dsh, les ancêtres |
| Pour envoyer une même suite de commandes sur un groupe de machines, on peut soit le faire à l' | Pour envoyer une même suite de commandes sur un groupe de machines, on peut soit le faire à l' | ||
| Ligne 8: | Ligne 8: | ||
| Avec dsh : | Avec dsh : | ||
| - | dsh -m machine1 -m machine2 commande | + | |
| Attention, n' | Attention, n' | ||
| - | dsh -m machine1 -m machine2 -m ... "echo $HOSTNAME" | + | |
| - | dsh -m machine1 -m machine2 -m ... 'echo $HOSTNAME' | + | dsh -m machine1 -m machine2 -m ... 'echo $HOSTNAME' |
| - | === clusterssh === | + | ===== clusterssh |
| Mais si on désire surveiller ce qui se passe sur toutes les machines, et ainsi avoir un contrôle visuel, et au besoin effectuer une correction sur une machine en particulier, | Mais si on désire surveiller ce qui se passe sur toutes les machines, et ainsi avoir un contrôle visuel, et au besoin effectuer une correction sur une machine en particulier, | ||
| Vous pouvez définir vos groupes de machines dans le fichier / | Vous pouvez définir vos groupes de machines dans le fichier / | ||
| - | groupe1 machine1 machine2 machine3 machine4 machine5 machine6 machine7 machine8 machine9 | + | |
| - | | + | groupe2 machine10 machine11 machine12 machine13 machine14 machine15 |
| - | all groupe1 groupe2 | + | all groupe1 groupe2 |
| Dès lors, un | Dès lors, un | ||
| - | cssh groupe1 # vous ouvre un terminal sur machine1 à machine 9 | + | |
| - | cssh groupe2 # vous ouvre un terminal sur machine10 à machine15 | + | cssh groupe2 # vous ouvre un terminal sur machine10 à machine15 |
| - | cssh all # pour machine1 à machine15 | + | cssh all # pour machine1 à machine15 |
| Si vous avez des ports particuliers, | Si vous avez des ports particuliers, | ||
| Ligne 37: | Ligne 37: | ||
| Pas de fichier de configuration de groupe pour ce programme, mais plusieurs options : | Pas de fichier de configuration de groupe pour ce programme, mais plusieurs options : | ||
| - | alias clusterm-groupe1=' | + | |
| ou bien constituer votre groupe "à la main" dans l' | ou bien constituer votre groupe "à la main" dans l' | ||
| - | === pssh === | + | ===== pssh ===== |
| Une autre petite suite d' | Une autre petite suite d' | ||
| Le plus simple est de lire ce qu' | Le plus simple est de lire ce qu' | ||
| - | * Parallel ssh (parallel-ssh, | + | |
| - | * Parallel scp (parallel-scp, | + | * Parallel scp (parallel-scp, |
| - | * Parallel rsync (parallel-rsync, | + | * Parallel rsync (parallel-rsync, |
| - | * Parallel nuke (parallel-nuke, | + | * Parallel nuke (parallel-nuke, |
| - | * Parallel slurp (parallel-slurp, | + | * Parallel slurp (parallel-slurp, |
| - | # Tout d' | + | |
| - | | + | parallel-ssh groupe1.txt uptime |
| - | + | ||
| - | # Récupérer dans des répertoires relatifs au nom des serveurs un fichier donné sur chacun des serveurs | + | # Récupérer dans des répertoires relatifs au nom des serveurs un fichier donné sur chacun des serveurs |
| - | mkdir -p / | + | mkdir -p / |
| - | | + | parallel-slurp -h groupe1.txt -L /tmp/slurp / |
| - | ls -lR /tmp/slurp | + | ls -lR / |
| - | + | ||
| - | # Tuer apache* sur tout un groupe de machines | + | # Tuer apache* sur tout un groupe de machines |
| - | | + | parallel-nuke -h groupe1.txt apache |
| - | + | ||
| - | # Pousser un fichier localement sur toutes les machines | + | # Pousser un fichier localement sur toutes les machines |
| - | | + | parallel-scp -h groupe1.txt toto.pl ~/toto.pl |
| Sinon, pour lancer juste une petite commande sur plusieurs machines et avoir tous les résultats à la suite, voila un tout petit script : | Sinon, pour lancer juste une petite commande sur plusieurs machines et avoir tous les résultats à la suite, voila un tout petit script : | ||
| - | # | + | |
| - | # Script to run a command across multiple machines | + | # Script to run a command across multiple machines |
| - | | + | TIMEOUT=10 |
| - | | + | MACHINES=$1; |
| - | | + | COMMAND=$1; |
| - | + | ||
| - | | + | for machine in $MACHINES |
| - | | + | do |
| - | echo | + | |
| - | | + | ssh -oConnectTimeout=$TIMEOUT $machine $COMMAND |
| - | | + | |
| - | | + | done |
| Exemple : | Exemple : | ||
| - | $ ./ | + | |
| - | | + | machine1 |
| - | | + | 13:15:59 up 8 days, 3:28, 1 user, load average: 0.00, 0.02, 0.00 |
| - | | + | machine2 |
| - | | + | 13:10:03 up 153 days, 22:43, 0 users, load average: 0.50, 0.48, 0.45 |
| - | | + | machine3 |
| - | | + | 13:16:00 up 117 days, 3:02, 9 users, load average: 0.39, 0.41, 0.45 |
| - | | + | machine4 |
| - | | + | 13:16:00 up 99 days, 3:25, 2 users, load average: 3.55, 4.35, 4.31 |
tuto/linux/envoyer_les_memes_commandes_sur_plusieurs_serveurs_ssh.1237118965.txt.gz · Dernière modification : de root
