Je l'ai fait fonctionner comme suit
.ssh/config a été modifié pour éliminer l'invite oui/non - je suis derrière un pare-feu donc je ne m'inquiète pas des clés ssh usurpées.
host *
StrictHostKeyChecking no
Créez un fichier de réponse pour le fichier expect, c'est-à-dire answer.expect.
set timeout 20
set node [lindex $argv 0]
spawn ssh root@node service hadoop-hdfs-datanode restart
expect "*?assword {
send "password\r" <- your password here.
interact
Créez votre script bash et appelez simplement expect dans le fichier
#!/bin/bash
i=1
while [$i -lt 129] # a few nodes here
expect answer.expect hadoopslave$i
i=[$i + 1]
sleep 5
done
Actualisation de 128 nœuds de données hadoop avec la nouvelle configuration - en supposant que vous utilisez un montage NFS pour les fichiers hadoop/conf.
J'espère que cela pourra aider quelqu'un - je suis un engourdi de Windows et cela m'a pris environ 5 heures à comprendre !