Python - Prześlij plik między dwoma zdalnymi serwerami, wykonując skrypt Pythona
Próbuję skopiować plik między dwoma serwerami z alocalServer
, powiedzmy zserver-A
doserver-B
. Używam pakietu paramiko w python.
Istnieją trzy serwery, a mianowicielocalServer
, server-A
iserver-B
. Zobacz poniższy kod, jest to oczywiste i daj mi znać, gdzie się mylę.
Algorytm, którego używam:
Próbuję biecparamiko_test.py
plik zlocalServer
.paramiko_test.py
wykonujecopy.py
plik wserver-A
.copy.py
plik kopiisource.txt
plik wserver-A
doserver-B
przy użyciu SFTP.Kiedy uciekamcopy.py
zserver-A
, działa poprawnie. Ale kiedy biegnęparamiko_test.py
zlocalServer
(który pośrednio wykonujecopy.py
wserver-A
), to nie działa!
Z dzienników dowiedziałem się, że istnieje udane połączenieserver-A
doserver-B
, ale potem część SFTP nie działa!
Pytanie: Czy możemy wywołać klienta SFTP w kliencie SFTP? Czy istnieje lepszy sposób kopiowania plików między dwoma serwerami?
Pomóż mi, gdzie się mylę.
serwer-A, plik: 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()
Wyjście zstderr.readlines()
jest:
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'