Сценарий оболочки останавливается при вызове SSH

#amazon-web-services #docker #docker-compose #sh

#amazon-веб-сервисы #docker #docker-compose #sh

Вопрос:

Я пытаюсь автоматизировать несколько вещей на AWS с помощью одного скрипта.

  1. войдите в систему и завершите работу docker-создайте, а затем удалите все изображения
  2. копирование локальных файлов на сервер
  3. войдите в систему и запустите docker-compose

Мой сценарий

 #log in and shut down docker-compose then remove all images
ssh -i "~/Documents/AWS-Keys/mykey.pem" ubuntu@XX.XXX.XX.XXX
docker-compose down
docker image prune -f
exit

#copy local files to server
scp -r -i "~/Documents/AWS-Keys/mykey.pem" ./ubuntu ubuntu@XX.XXX.XX.XXX:/home

#log in and start docker-compose
ssh -i "~/Documents/AWS-Keys/mykey.pem" ubuntu@XX.XXX.XX.XXX
docker-compose up -d
exit
 

Я также пробовал logout вместо exit , тот же результат.

Выполняется

 $ ./upload.sh 
 

Вывод:

 Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-1038-aws x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Tue Mar  2 21:52:40 UTC 2021

  System load:                      0.07
  Usage of /:                       66.0% of 7.69GB
  Memory usage:                     36%
  Swap usage:                       0%
  Processes:                        115
  Users logged in:                  1
  IPv4 address for xxxxxxxxxxxxxxx: XXX.XX.X.X
  IPv4 address for docker0:         XXX.XX.X.X
  IPv4 address for eth0:            XXX.XX.X.XXX

 * Introducing self-healing high availability clusters in MicroK8s.
   Simple, hardened, Kubernetes for production, from RaspberryPi to DC.

     https://microk8s.io/high-availability

3 updates can be installed immediately.
0 of these updates are security updates.
To see these additional updates run: apt list --upgradable


Last login: Tue Mar  2 21:51:47 2021 from XXX.XX.X.XXX

ubuntu@ip-XXX.XX.X.XXX:~$ 
 

Получив некоторую обратную связь, я тоже попробовал

 ssh -i "~/Documents/AWS-Keys/mykey.pem" ubuntu@XX.XXX.XX.XXX
docker-compose down;
docker image prune -f;
exit
 

Тот же результат.

Комментарии:

1. Вы попробовали неправильную команду. Скопируйте и вставьте ответ, за который проголосовали.

Ответ №1:

Насколько я понимаю, вы хотите запустить команду на сервере, в этом случае просто напишите ее после ssh:

ssh -i "~/Documents/AWS-Keys/mykey.pem" ubuntu@XX.XXX.XX.XXX "docker-compose down ;docker image prune -f"

более длинный сценарий, который вы можете отправить через HEREDOC

 ssh -i "~/Documents/AWS-Keys/mykey.pem" ubuntu@XX.XXX.XX.XXX  <<COMMANDS
docker-compose down
docker image prune -f
COMMANDS

 

Комментарии:

1. Предпринята попытка предложить решение. Тот же результат.

2. хорошо, можете ли вы уточнить вопрос, что именно вы сделали и каков был результат?

3. Я добавил точки с запятой «:» после каждой командной строки, как показано выше. Как и в docker-compose down; Результат остается таким же, как указано выше: результат:

4. Итак, у вас также есть команды в кавычках, как показано выше? Потому что без этого он будет выполняться локально. Или попробуйте другой синтаксис с помощью HEREDOC.