方法
- 导入paramiko库,paramiko是一个基于SSH用于连接远程服务器并执行相关操作的库
- 建立连接,在本地将命令传送给远程机,对指定docker容器进行操作
- 文件传输,关闭连接
因为这两种都可是实现连接远程机,自己初学时网上的介绍一般都是把实现命令和文件传输分开介绍。在这里就不单独介绍这两种了,直接说一下建立简介后同时需要发送命令和文件操作的需求情况,有单独的需求可以查找其他博主的详细介绍
代码
SSHClient是传统的连接服务器、执行命令、关闭的一个操作,而transport 方式登录后可以实现文件等操作,这里的方法就是把paramiko.Transport创建的连接赋给SSHClient连接对象ssh,使得ssh可以同时发送命令和文件操作。
docker操作:需要熟悉docker命令,比如
docker ps # 列出docker容器
docker exec # 进入容器,可通过容器id和容器名称进入
注意使用docker exec进入容器时要考虑工作目录切换问题,一般接上‘-it’参数后在命令行可以进入docker继续输入命令,然而使用ssh.exec_command发送docker exec -it会报错,因为此时并不需要可交互的方式,可去掉-it参数
在这里需要继续进入目录和下载,去掉-it参数同时也无法继续操作 (更正:通过添加"get_pty=True"参数的方式也可以):
ssh.exec_command('docker exec -it {