
У меня есть 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
- Вы говорите , используя как переменную оболочки. Но это означает, что вам нужно ссылаться на эту переменную как , например, .
for j in …(values)… do ssh appAccount@j done
j
$j
ssh "appAccount@$j"
- Вам нужна точка с запятой (
;
) или новую строку междуssh "appAccount@$j"
иdone
.
Есть и другие проблемы — например, все ссылки на переменные оболочки должны быть заключены в кавычки, — но вышеизложенное должно помочь вам начать.