2017-06-12 122 views
-1

问题陈述:无法使用scp通过ssh在Python

我有3个不同的集线器(HUB1,HUB2 & HUB3)。我需要从Hub1 - > Hub2 - > Hub3复制文件(没有从Hub1到Hub3的直接连接,我们只需要通过Hub2进行传输)。

所以,在这里我在Hub1中运行我的python脚本并在脚本中执行ssh。通过这样做,我会在无形中(I,E脚本EXEC在HUB1但高管的流动是HUB2 SSH后),HUB2和尝试做SCP那边象下面这样:在执行上面的命令有

ssh_stdin,ssh_stdout, ssh_stderr = ssh.exec_command("scp %s [email protected]:/home/tpath/tdir" %(imageName)) 

提示输入密码,不幸的是一切都被导入到ssh_stderr通道中。

如何通过ssh执行scp或如何执行ssh_stdin。

欢迎任何其他解决方案。提前致谢 。

回答

0

您可以使用pysftp如下:

import pysftp 

with pysftp.Connection('100.101.102.3',username='username', password='passwd') as sftp: 
     sftp.put('filename') 
+0

pysftp工作如果我直接从HUB2传送文件到HUB 3,真正的challange是脚本HUB 1上运行,实际上通过SSH与HUB 2相互作用,我们需要传输文件到HUB3。 – Kumar

+0

您可以分两步进行:1)首先将脚本(包括从HUB2> HUB3复制的pysftp)复制到HUB2,2),然后通过ssh登录到HUB2并执行该脚本。 – Pankaj