Python - Transfere um arquivo entre dois servidores remotos, executando um script python
Eu estou tentando copiar um arquivo entre dois servidores de umlocalServer
digamos deserver-A
paraserver-B
. Eu estou usando o pacote paramiko em python.
Então, existem três servidores, ou seja,localServer
, server-A
eserver-B
. Por favor, veja o código abaixo, isso é auto-explicativo e, por favor, deixe-me saber onde estou indo errado.
Algoritmo que estou usando:
Estou tentando correrparamiko_test.py
arquivo delocalServer
.paramiko_test.py
executacopy.py
arquivo emserver-A
.copy.py
arquivo de cópiassource.txt
arquivo emserver-A
paraserver-B
usando SFTP.Quando eu corrocopy.py
deserver-A
está funcionando corretamente. Mas quando eu corroparamiko_test.py
delocalServer
(que indiretamente executacopy.py
emserver-A
), Não está funcionando!
De logs, eu tenho que saber que há uma conexão bem-sucedida deserver-A
paraserver-B
, mas depois disso a parte do SFTP não está funcionando!
Questão: Podemos invocar um cliente SFTP em um cliente SFTP? Existe alguma maneira melhor de copiar arquivos entre dois servidores?
Por favor me ajude onde eu estou indo errado.
servidor-A, arquivo: 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()
A saída destderr.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'