J'ai une machine locale qui est censée créer une session SSH vers une master
machine distante , puis une autre session SSH interne de la master
à chacun de certaines télécommandes slaves
, puis exécuter 2 commandes, c'est-à-dire supprimer un répertoire spécifique et le recréer.
Notez que la machine locale a SSH sans mot de passe pour le maître et le maître a SSH sans mot de passe pour les esclaves. De plus, tous les noms d'hôtes sont connus sur .ssh/config
les machines locales / maîtres et les noms d'hôtes des esclaves sont slaves.txt
localement et je les lis à partir de là.
Donc, ce que je fais et travaille est le suivant:
username="ubuntu"
masterHostname="myMaster"
while read line
do
#Remove previous folders and create new ones.
ssh -n $username@$masterHostname "ssh -t -t $username@$line "rm -rf Input Output Partition""
ssh -n $username@$masterHostname "ssh -t -t $username@$line "mkdir -p EC2_WORKSPACE/$project Input Output Partition""
#Update changed files...
ssh -n $username@$masterHostname "ssh -t -t $username@$line "rsync --delete -avzh /EC2_NFS/$project/* EC2_WORKSPACE/$project""
done < slaves.txt
Ce cluster est sur Amazon EC2 et j'ai remarqué qu'il y a 6 sessions SSH créées à chaque itération ce qui induit un retard important. Je voudrais combiner ces 3 commandes en 1 pour obtenir moins de connexions SSH. J'ai donc essayé de combiner les 2 premières commandes en
ssh -n $username@$masterHostname "ssh -t -t $username@$line "rm -rf Input Output Partition && mkdir -p EC2_WORKSPACE/$project Input Output Partition""
Mais cela ne fonctionne pas comme prévu. Il semble exécuter le premier ( rm -rf Input Output Partition
) puis quitte la session et continue. Que puis-je faire?
-J
option qui définirait votre hôte de saut.