Я хотел бы получить доступ к некоторому серверу через SSH, выполнить несколько команд и выйти. Сделайте это для большого количества серверов.

Я знаю, что могу сделать это только для одной машины, с помощью этого сценария:

ssh **IP** << EOF

chown -R **COMMAND 1**

chown -R **COMMAND 2**

chmod -R 775 **COMMAND 3**

EOF

Но когда я пытаюсь поместить это в FOR в SHELL, я повторяю 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

Где здесь моя ошибка?

2 ответа2

2

bash ожидает увидеть EOF в начале строки в вашем скрипте. Попробуйте удалить отступ перед EOF .

1

Попробуйте использовать символ новой строки после первого EOF и до последнего EOF.

Еще одна вещь, которая приходит мне в голову, это то, что вы также можете использовать pssh (параллельный SSH) для выполнения этой работы. Я просто не знаю, подходит ли это вашему проекту.

Надеюсь, это поможет! :)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .