linux - shell脚本,用于通过SSH在新shell中执行命令

标签 linux bash docker

我正在使用以下两个命令连接到远程VM主机并访问docker bash。

ssh -i ~/.ssh/rsa opc@100.111.99.164
sudo docker exec -it MT bash
首先,我运行ssh -i ~/.ssh/rsa opc@100.111.99.164,以响应连接到指定的计算机,然后在此新计算机的终端中运行sudo docker exec -it MT bash
我手动完成所有这些操作,一天之内有各种各样的实例可用于连接。我想编写一个可以自动执行此过程的脚本。但是问题是,当我在.sh文件中写入上述命令并运行它时,第二条命令(即sudo docker exec -it MT bash)未执行,这也是预期的,因为脚本未在计算机的终端中运行(100.111.99.164)我连接到的。
如果有人可以提出解决方案,我将不胜感激。

最佳答案

您可以将docker exec命令传递给ssh命令。

ssh -i ~/.ssh/rsa -tt opc@100.111.99.164 "sudo su - root -c 'docker exec -it MT bash'"  

或者如果您想在容器中运行命令,则可以将命令传递给容器

ssh -i ~/.ssh/rsa -tt opc@100.111.99.164 "sudo su - root -c 'docker exec -it MT bash  -c \"echo hello from cotainer\"'"  

关于linux - shell脚本,用于通过SSH在新shell中执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62870122/

相关文章:

linux - Windows 与 Linux 上的 svn 差异

java - 用其他东西替换 eval

bash - 命令替换但不将输出分成多个参数

reactjs - "Create React App"与 Docker

javascript - 如何在 Linux 中作为守护进程运行的二进制 nodejs 应用程序中运行 exec?

linux - 在 bash 命令中执行

android - 在 Android selinux 中转义冒号字符

arrays - bash 函数返回更改后的索引

docker - 使用 docker-compose 构建两个不同标记的 docker 镜像

python - docker-py client.images.list() 始终显示所有图像