我正在尝试在两台服务器之间从 a 复制文件localServer
,比如从server-A
to server-B
。我在 python 中使用 paramiko 包。
所以有三台服务器,即localServer
、server-A
和server-B
。请参阅下面的代码,这是不言自明的,请让我知道我哪里出错了。
我正在使用的算法:
- 我正在尝试
paramiko_test.py
从localServer
. paramiko_test.py
中执行copy.py
文件server-A
。copy.py
将文件source.txt
文件复制server-A
到server-B
使用 SFTP。
当我从 运行copy.py
时server-A
,它工作正常。但是当我paramiko_test.py
从localServer
(间接执行)运行copy.py
时server-A
,它不起作用!
从日志中,我知道从server-A
to连接成功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()
本地服务器,paramiko_test.py:
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()
的输出stderr.readlines()
是:
Traceback (most recent call last):
File "/home/sitaram/sumanth/test_progs/copy.py", line 12, in <module>
sftp1.put('./sumanth_temp.txt','/home/ncloudadmin/sumanth.txt' )
File "/usr/lib/pymodules/python2.6/paramiko/sftp_client.py", line 558, in put
file_size = os.stat(localpath).st_size
OSError: [Errno 2] No such file or directory: './sumanth_temp.txt'