У меня есть n серверов, таких как c0001.test.cloud.com , c0002.test.cloud.com , c0003.test.cloud.com и я хочу сделать ssh между этими серверами, как: с сервера: c0001 сделать ssh на c0002 и затем выйдите из сервера. Вернитесь к c0001, выполните команду ssh к c0003 и выйдите из сервера.

Таким образом, он будет выполнять скрипт без ввода данных во время выполнения, и у нас может быть n серверов. Я написал один сценарий:

str1=c0001.test.cloud.com,c0002.test.cloud.com,c0003.test.cloud.com
string="$( cut -d ',' -f 2- <<< "$str1" )"
echo "$string"
for j in $(echo $string | sed "s/,/ /g") do ssh appAccount@j done

Но этот скрипт не работает нормально. Я также проверил это, передав параметры, такие как: -o StrictHostKeyChecking=no и <<'ENDSSH' но он не работает. Итак, как мы можем достичь SSH между несколькими серверами, используя сценарии?

1 ответ1

0
  1. Вы говорите for j in …(values)… do ssh appAccount@j done , используя j в качестве переменной оболочки.  Но это означает, что вам нужно ссылаться на эту переменную как $j , например, ssh "appAccount@$j" .
  2. Вам нужна точка с запятой (;) или перевод строки между ssh "appAccount@$j" и done .

Существуют и другие проблемы - например, все ссылки на переменные оболочки должны быть заключены в кавычки - но приведенное выше должно помочь вам начать.

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