У меня Docker, работающий на экземпляре AWS EC2 (Elastic Beanstalk). Я хотел бы в интерактивном режиме автоматически запускать bash в контейнере с помощью сценария, который я запускаю из своей оболочки, без необходимости каждый раз вводить все команды.
Я сделал это, используя ответ суперпользователя о печати отдельных аргументов на основе регулярных выражений. Если я ввожу или вставляю его во время входа в AWS, он работает нормально.
sudo docker exec -it $(sudo docker ps | awk '{for(i=1;i<=NF;i++){if($i~/ecs-awseb-mything-.*/){print $i}}}') bash
Это мой SSH коннект "скрипт":
#!/usr/bin/env bash
ssh -i /path/to/my.pem awsuser@myhost
Я попытался объединить два безрезультатно с помощью ssh -t:
#!/usr/bin/env bash
ssh -i /path/to/my.pem awsuser@myhost -t "sudo docker exec -it $(sudo docker ps | awk '{for(i=1;i<=NF;i++){if($i~/ecs-awseb-mything-.*/){print $i}}}') bash"
Но не повезло. Вот расшифровка стенограммы консоли:
myuser@MYCOMPUTER:~$ ./myscript.sh
sudo: unable to resolve host MYCOMPUTER
[sudo] password for myuser:
myuser@MYCOMPUTER:~$
Кажется, что он пытается выполнить команду, а затем подключиться? Так что я поменял его на это:
#!/usr/bin/env bash
ssh -i /path/to/my.pem -t "sudo docker exec -it $(sudo docker ps | awk '{for(i=1;i<=NF;i++){if($i~/ecs-awseb-mything-.*/){print $i}}}') bash" awsuser@myhost
Все та же проблема. Спасибо за помощь!