我正在使用以下两个命令连接到远程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/