Last active
December 28, 2023 17:45
-
-
Save marcelloinfoweb/533da1490c13069d79bbbb73a62547de to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
import os | |
import sys | |
def verificar_argumentos(): | |
""" | |
Verifica se todos os argumentos necessários foram fornecidos. | |
""" | |
if len(sys.argv) != 4: | |
print("Uso: script.py servidor_origem servidor_destino arquivo") | |
sys.exit(1) | |
def ler_arquivo(arquivo): | |
""" | |
Tenta abrir o arquivo e ler as linhas. | |
Args: | |
arquivo (str): O caminho do arquivo a ser lido. | |
Returns: | |
list: Uma lista de linhas do arquivo. | |
""" | |
try: | |
with open(arquivo, 'r') as f: | |
return f.readlines() | |
except IOError: | |
print(f"Não foi possível abrir o arquivo: {arquivo}") | |
sys.exit(1) | |
def migrar_emails(linhas, servidor_origem, servidor_destino): | |
""" | |
Percorre cada linha do arquivo e tenta migrar os emails. | |
Args: | |
linhas (list): Uma lista de linhas do arquivo. | |
servidor_origem (str): O servidor de origem. | |
servidor_destino (str): O servidor de destino. | |
Returns: | |
tuple: Um tuple contendo o número de emails migrados com sucesso, o número de falhas e uma lista de emails que falharam na migração. | |
""" | |
sucesso = 0 | |
falha = 0 | |
falhas_emails = [] | |
for linha in linhas: | |
try: | |
email, senha, email2, senha2 = linha.strip().split() | |
except ValueError: | |
print(f"Linha mal formatada: {linha.strip()}") | |
continue | |
comando = f"imapsync --host1 {servidor_origem} --user1 {email} --password1 \"{senha}\" --host2 {servidor_destino} --user2 {email2} --password2 \"{senha2}\" --ssl1 --ssl2 --idatefromheader" | |
resultado = os.system(comando) | |
if resultado == 0: | |
print(f"Email {email} migrado com sucesso!") | |
sucesso += 1 | |
else: | |
print(f"Erro ao migrar o email: {email}. Código de erro: {resultado}") | |
falha += 1 | |
falhas_emails.append(email) | |
return sucesso, falha, falhas_emails | |
def imprimir_resultados(sucesso, falha, falhas_emails): | |
""" | |
Imprime o resumo dos resultados e os emails que falharam na migração. | |
Args: | |
sucesso (int): O número de emails migrados com sucesso. | |
falha (int): O número de falhas na migração. | |
falhas_emails (list): Uma lista de emails que falharam na migração. | |
""" | |
print(f"\nResumo da migração:\nEmails migrados com sucesso: {sucesso}\nFalhas na migração: {falha}") | |
if falhas_emails: | |
print("\nEmails que falharam na migração:") | |
for email in falhas_emails: | |
print(email) | |
def main(): | |
""" | |
A função principal que executa todas as outras funções. | |
""" | |
verificar_argumentos() | |
servidor_origem = sys.argv[1] | |
servidor_destino = sys.argv[2] | |
arquivo = sys.argv[3] | |
linhas = ler_arquivo(arquivo) | |
sucesso, falha, falhas_emails = migrar_emails(linhas, servidor_origem, servidor_destino) | |
imprimir_resultados(sucesso, falha, falhas_emails) | |
if __name__ == "__main__": | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment