Je voudrais accéder à un serveur via SSH, exécuter des commandes et quitter. Faites cela pour beaucoup de serveurs.
Je sais que je peux le faire pour une seule machine, avec ce script:
ssh **IP** << EOF
chown -R **COMMAND 1**
chown -R **COMMAND 2**
chmod -R 775 **COMMAND 3**
EOF
Mais quand j'essaie de mettre cela à l'intérieur d'un FOR dans SHELL, n'arrête pas de dire line 17: syntax error: unexpected end of file
.}
Voici mon code pour plusieurs serveurs SSH:
#!/bin/bash
#user already added to group nagios by LDAP
declare -a arr=( **IP1 IP2 IP3** ...)
for i in ${arr[@]}
do
echo "Acessing server $i"
ssh IP << EOF
chown -R COMMAND 1
chown -R COMMAND 2
chmod -R 775 COMMAND 3
EOF
done
Où est mon erreur ici?
Pseudo-terminal will not be allocated because stdin is not a terminal.
, devrais-je m'inquiéter à ce sujet?ssh hostname 'command1; command2; command3'
.Essayez avec le caractère de nouvelle ligne après le premier et avant le dernier EOF.
Une autre chose qui me vient à l’esprit est que vous pouvez également utiliser pssh (SSH parallèle) pour faire le travail. Je ne sais pas si cela correspond à votre projet.
J'espère que cela pourra aider! :)
la source
pssh
, Je vais examiner. Je vous remercie!