@historydev
Острая аллергия на анимешников

Как выполнить команду подхватывая окружения хоста и удалённого сервера?

Команда из CI сценария gitlab.

Вариант 1 (двойные кавычки):
ssh docker-user@192.168.100.3 "(docker stop $(docker ps -q -f ancestor=docker-ci-cd)) && echo CONTAINER docker-ci-cd STOPPED || echo CONTAINER docker-ci-cd NOT FOUND"


Вариант 2 (одинарные кавычки):
ssh docker-user@192.168.100.3 '(docker stop $(docker ps -q -f ancestor=docker-ci-cd)) && echo CONTAINER docker-ci-cd STOPPED || echo CONTAINER docker-ci-cd NOT FOUND'


Вариант 3 (оригинал из CI файла):
ssh $REMOTE_SERVER_ADDRESS "(docker stop $(docker ps -q -f ancestor=$CI_PROJECT_NAME)) && echo CONTAINER $CI_PROJECT_NAME STOPPED || echo CONTAINER $CI_PROJECT_NAME NOT FOUND"


Вариант 1 выполняет команду докера локально, долго думал что ошибка на хосте с докером.
Не может найти контейнер и падает в ошибку естественно.

Вариант 2 выполняет команду докера удалённо, но не может получить доступ к переменным окружения из Вариант 3.

Как мне подхватить окружение и выполнить команду удалённо?
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега SSH
software engineer
ssh docker-user@192.168.100.3 "(docker stop \$(docker ps -q -f ancestor=docker-ci-cd)) && echo CONTAINER docker-ci-cd STOPPED || echo CONTAINER docker-ci-cd NOT FOUND"


ssh $REMOTE_SERVER_ADDRESS "(docker stop \$(docker ps -q -f ancestor=$CI_PROJECT_NAME)) && echo CONTAINER $CI_PROJECT_NAME STOPPED || echo CONTAINER $CI_PROJECT_NAME NOT FOUND"
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AshBlade
@AshBlade
Просто хочу быть счастливым
Экранировать $?
ssh $REMOTE_SERVER_ADDRESS "\$(docker stop \$(docker ps -q -f ancestor=\$CI_PROJECT_NAME)) && echo CONTAINER \$CI_PROJECT_NAME STOPPED || echo CONTAINER \$CI_PROJECT_NAME NOT FOUND"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы