Python-在两个远程服务器之间传输文件,但Python脚本除外
我试图在两台服务器之间从Python-在两个远程服务器之间传输文件,但Python脚本除外,python,paramiko,Python,Paramiko,我试图在两台服务器之间从localServer复制一个文件,比如从server-a复制到server-B。我正在使用python中的paramiko包 因此有三个服务器,即,localServer,server-A和server-B。请看下面的代码,这是不言自明的,请让我知道我哪里出错了 我使用的算法: 我正在尝试从localServer运行paramiko_test.py文件 paramiko_test.py执行server-A中的copy.py文件 copy.py使用SFTP将server-
localServer
复制一个文件,比如从server-a
复制到server-B
。我正在使用python中的paramiko包
因此有三个服务器,即,localServer
,server-A
和server-B
。请看下面的代码,这是不言自明的,请让我知道我哪里出错了
我使用的算法:
localServer
运行paramiko_test.py
文件paramiko_test.py
执行server-A
中的copy.py
文件copy.py
使用SFTP将server-A
中的文件source.txt
复制到server-B
server-A
运行copy.py
时,它工作正常。但是当我从localServer
运行paramiko_test.py
(它在server-A
中间接执行copy.py
)时,它不工作
从日志中,我知道有一个从server-a
到server-B
的成功连接,但在此之后,SFTP部分不工作
问题:我们可以在SFTP客户端中调用SFTP客户端吗?有没有更好的方法在两台服务器之间复制文件
请告诉我哪里出了问题
服务器A,文件:copy.py:
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('<server-B-IP>', username='serverB', password='passwd')
print "connected successfully!"
sftp = ssh.open_sftp()
print sftp
sftp.put('source.txt','/home/serverB/destination.txt' )
sftp.close()
print "copied successfully!"
ssh1.close()
exit()
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('<server-A-IP>', username='serverA', password='passwd')
print "connected successfully!"
stdin, stdout, stderr = ssh.exec_command("python /home/username/copy.py")
print stdout.readlines()
print "copied successfully!"
ssh.close()
exit()
这个问题已经有一年了,所以可能不再相关了,但它可能对其他人有用。问题出在您的copy.py中
sftp.put('source.txt','/home/serverB/destination.txt' )
source.txt位于哪里?提供完整路径,或者如果文件始终与copy.py位于同一目录中,则可以修改paramiko_test.py
ssh.exec_command("cd /home/username/; python /home/username/copy.py")
你看过布料吗?这比帕拉米科要容易一点,可以做一些事情,比如你好,亚历克斯,谢谢你的回复。我查看了Fabric,没有看到任何支持两个远程主机之间文件传输的Fabric,它在另一个本地服务器上运行脚本。或者它是由织物支撑的??请提供帮助。您可以通过SSH连接到其中一个远程服务器,然后通过SFTP/SCP连接吗?您的
sterr
中是否有任何内容?print stderr.readlines()的输出是[“回溯(最近一次调用):\n',
文件/home/username/copy.py],第12行,in\n',
文件“/usr/lib/pymodules/python2.6/paramiko/sftp_client.py”,第558行,输入“,
'file_size=os.stat(localpath).st_size\n”,
“OSError:[Errno 2]没有这样的文件或目录:'./source.txt'\n”]
但是我看到source.txt存在于正确的目录中!!sftp.put
或sftp.get
是否确保ssh.exec\u命令在完成文件传输之前不会执行?
ssh.exec_command("cd /home/username/; python /home/username/copy.py")