localServer
から、たとえばからserver-A
への2つのサーバー間でファイルをコピーしようとしていますserver-B
。Pythonでparamikoパッケージを使用しています。
つまり、、、の3つのサーバーがlocalServer
ありserver-A
ますserver-B
。以下のコードを参照してください。これは自明であり、どこが間違っているのか教えてください。
私が使用しているアルゴリズム:
paramiko_test.py
からファイルを実行しようとしていますlocalServer
。paramiko_test.py
copy.py
でファイルを実行しますserver-A
。copy.py
SFTPを使用してファイルsource.txt
ファイルをコピーします。server-A
server-B
copy.py
から実行するserver-A
と、正しく機能しています。しかし、(で間接的に実行される)paramiko_test.py
から実行すると、機能しません!localServer
copy.py
server-A
server-A
ログから、からへの接続が成功していることがわかりましたがserver-B
、その後、SFTP部分が機能していません。
質問: SFTPクライアント内でSFTPクライアントを呼び出すことはできますか?2つのサーバー間でファイルをコピーするためのより良い方法はありますか?
私が間違っているところを助けてください。
server-A、file: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()
localServer、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'