SSH между N количеством серверов

295
Niket Sharma

У меня есть п число серверов, таких как 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 между несколькими серверами, используя сценарии?

0
Почему вы это делаете? Какова цель? Christopher Hostage 6 лет назад 0
После выполнения SSH мне нужно отправить данные с C001 на разных серверах. Niket Sharma 6 лет назад 0
Поскольку вы пытаетесь отправить файлы, я предлагаю использовать протокол передачи файлов, например, sftp или rsync. Это очень просто автоматизировать. Вы можете рассмотреть возможность получения от клиентов, а не от происхождения. Christopher Hostage 6 лет назад 0
Ранее мы делали это вручную, например: ssh appAccount @ serverName, после этого он будет спрашивать: Вы уверены, что хотите продолжить подключение (да / нет)? а затем, набрав yes, мы можем достичь этого, и этот процесс повторяется для каждого сервера. Но я хочу автоматизировать этот процесс. Niket Sharma 6 лет назад 0
Почему вы снова опубликовали [этот вопрос] (https://superuser.com/q/1341903/432690)? Вы тот же автор? Kamil Maciorowski 6 лет назад 0
Я не смог добавить комментарии по этому вопросу. Niket Sharma 6 лет назад 0
Пожалуйста, посмотрите это: [* Я случайно создал две учетные записи; как мне их объединить? *] (https://superuser.com/help/merging-accounts) Так как другой вопрос дублирован и помечен как дубликат, вы можете притвориться, что он не ваш, и не пытаться объединить учетные записи. :) Kamil Maciorowski 6 лет назад 0

1 ответ на вопрос

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

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

Привет Скотт, После добавления; он снова спрашивает. Вы уверены, что хотите продолжить соединение (да / нет)? Ранее мы делали это вручную, например: ssh appAccount @ serverName, после этого он будет спрашивать: Вы уверены, что хотите продолжить подключение (да / нет)? а затем, набрав yes, мы можем достичь этого, и этот процесс повторяется для каждого сервера. Но я хочу автоматизировать этот процесс, поэтому хочу написать скрипт и выполнить его в цикле, чтобы он выполнял тсс между всеми компьютерами, присутствующими в списке. Niket Sharma 6 лет назад 0