Copiando arquivos com Python
Posted on Wed 14 February 2018 in Python • 2 min read
Nesse post ensinei a criar um script basico para o envio de emails usando python.
Vamos agora aprender a coletar os logs (ou arquivos que voce desejar) para anexar ao script de envio de emails.
Lembrando que a versão do Python que iremos trabalhar é a 3.6.
Antes de tudo vamos instalar o modulo Paramiko
$ pip3.6 install paramiko
Vamos inserir os modulos
import shutil
import paramiko
Começamos importando os modulos necessarios para acessar e copiar os arquivos. Os modulos que vamos utilizar são Paramiko e o shutil.
Esse ultimo não será necessario a instalação pois é um dos modulos padrões do Python
Inicialmente vamos abrir a conexão com servidor, passando por parametros as informações do host
Podemos ver que usamos a porta padrão, porem não esqueça de alterar caso seja diferente.
import shutil
import paramiko
def copyFile(HostIp):
# Abre a conexão
s = paramiko.SSHClient()
# Insere a chave do servidor remoto como confiavel
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# Carrega as chaves já inseridas
s.load_system_host_keys()
# Efetua a conexão pela porta 22 com o usuario USER
s.connect(HostIp, port = 22, username = "USER")
Agora vamos setar as variáveis, inserindo quais arquivos copiar
# Nome do arquivo a ser copiado
files = ['NAME OF FILE']
# Caminho do arquivo, podemos setar diversos locais
remote_images_path = '/path/remote/of/file/'
# Caminho onde sera salvo o arquivo
local_path = '/path/local/of/destiny/'
Vamos precisar de um for
para copiar os arquivo(s)
# Abre a conexâo ftp
sftp = s.open_sftp()
for file in files:
# Aqui setamos o caminho e o arquivo a ser copiado
file_remote = remote_images_path + file
# Aqui setamos o caminho local
file_local = local_path + file
# Exibe o caminho remoto sendo copiado para o caminho local
print(file_remote + ' >>>' + file_local)
# Efetua a copia
sftp.get(file_remote, file_local)
# Fecha as conexões
sftp.close()
s.close()
O script final ficará dessa forma
import shutil
import paramiko
def copyFile(HostIp):
# Abre a conexão
s = paramiko.SSHClient()
# Insere a chave do servidor remoto como confiavel
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# Carrega as chaves já inseridas
s.load_system_host_keys()
# Efetua a conexão pela porta 22 com o usuario USER
s.connect(HostIp, port = 22, username = "USER")
# Nome do arquivo a ser copiado
files = ['NAME OF FILE']
# Caminho do arquivo, podemos setar diversos locais
remote_images_path = '/path/remote/of/file/'
# Caminho onde sera salvo o arquivo
local_path = '/path/local/of/destiny/'
# Abre a conexão ftp
sftp = s.open_sftp()
for file in files:
# Aqui setamos o caminho e o arquivo a ser copiado
file_remote = remote_images_path + file
# Aqui setamos o caminho local
file_local = local_path + file
# Exibe o caminho remoto sendo copiado para o caminho local
print(file_remote + ' >>>' + file_local)
# Efetua a copia
sftp.get(file_remote, file_local)
# Fecha as conexões
sftp.close()
s.close()
Simples Assim 😆
Qualquer duvida ou algo pra complementar deixe seu comentario.
Fontes:
– http://docs.paramiko.org/en/2.4/
– https://docs.python.org/3.6/library/shutil.html