![](/img/trans.png)
[英]How to transfer the data from one SQL server to another using insert into command using python?
[英]How to transfer data from one server to another without downloading to local using Python?
我正在使用Paramiko将一些图像下载到localhost,然后通过SSH将其上传到服务器。
如何在不下载到本地的情况下实现它? 由于服务器在下载和上传大文件(> 100 mb)时超时。
类似于以下内容: https : //unix.stackexchange.com/questions/9029/how-to-wget-a-file-to-a-remote-machine-over-ssh
但是在Python中。
假设您具有这样的网络结构:
local machine ---X--- machine A
| |
| Z
| |
---Y---- machine B
那么您当前正在通过链接X
下载,然后通过链接Y
上传。 如果machine A
可以直接与machine B
对话,则链接Z
也存在。 machine A
和machine B
均可公开访问的情况就是这种情况。
因此,您希望machine A
启动将图像直接传输到machine B
。 此时,正是代码在machine A/B
上运行来处理传输,因此Python解决方案很可能只会帮助您开始传输。
如果您是使用ssh
在bash shell中进行此操作的,则可以输入以下内容:
ssh user@machineA 'scp myfile user@machineB'
这假定您具有对machine A
上ssh服务器的外壳访问权限,并且已安装了scp
程序。 Paramiko仅对建立与machine A
的连接以启动传输有用,而对处理传输本身无效。
这样的事情可能会起作用:
ssh = paramiko.SSHClient()
ssh.connect('machineA', username='user', password='passwd')
stdin, stdout, stderr = ssh.exec_command("scp '{imgpath}' user@machineB".format(
imgpath='path/to/file/on/machineA')
更新:
如果图像是从machine A
但是您没有ssh登录访问权限,则可以通过登录machine B
并执行命令来获取图像,将图像直接拉到machine B
wget
通常可用于此目的。 因此,从localhost
执行此操作的代码可能是:
ssh = paramiko.SSHClient()
ssh.connect('machineB', username='user', password='passwd')
stdin, stdout, stderr = ssh.exec_command("wget '{imgurl}'".format(
imgurl='http://url.to.image/file')
对于测试,只需跳过使用paramiko并直接使用ssh / wget即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.