我想通过 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)来完成这项工作。我只是不知道它是否适合您的项目。
希望有帮助!:)