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 : 2009/03/15 12:09 de root