如何在 SHELL 中使用 for 来 SSH 多个服务?

如何在 SHELL 中使用 for 来 SSH 多个服务?

我想通过 SSH 访问一些服务器,运行一些命令然后退出。对许多服务器执行此操作。

我知道我只能用这个脚本在一台机器上执行此操作:

ssh **IP** << EOF

chown -R **COMMAND 1**

chown -R **COMMAND 2**

chmod -R 775 **COMMAND 3**

EOF

但是当我尝试将其放入 SHELL 中的 FOR 中时,它一直说line 17: syntax error: unexpected end of file.}

以下是我的 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

我的错误在哪里?

答案1

bash 期望EOF在脚本的行首看到 。请尝试删除 之前的缩进EOF

答案2

尝试在第一个 EOF 之后和最后一个 EOF 之前使用换行符。

我想到的另外一件事是,您也可以使用 pssh(并行 SSH)来完成这项工作。我只是不知道它是否适合您的项目。

希望有帮助!:)

相关内容