-
Notifications
You must be signed in to change notification settings - Fork 0
/
servidor.py
105 lines (78 loc) · 3.61 KB
/
servidor.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import os
import tools
import paramiko
import pandas as pd
import nycklar.nodes as nodes
import configuracion.globales as globales
import configuracion.configuracion as configuracion
#Future: Revisar cuanto se parece servidor a SulkuPypi para que lo conviertas en ello.
def conecta():
#Digital Signature.
ssh = paramiko.SSHClient()
ssh.load_host_keys("nycklar/itrst")
#Ahora obtendremos nuestra sk para poder entrar a ese servidor.
project_dir = os.getcwd()
key_filename = os.path.join(project_dir, "nycklar", "go")
ssh.connect(nodes.realm, username=nodes.master, key_filename=key_filename)
sftp = ssh.open_sftp()
print("Servidor conectado...")
return ssh, sftp
def lee(sftp, caja):
#Ésta función lee el contenido de un archivo d
# e texto.
with sftp.open(caja, 'rb') as archivo:
# Leer el contenido del archivo como bytes
contenido_bytes = archivo.read()
# Decodificar los bytes a Unicode usando la codificación UTF-8
contenido = contenido_bytes.decode('utf-8')
return contenido
def escribe(sftp, archivo, contenido):
#Actualiza el nuevo valor en el servidor en modo escritura.
with sftp.open(archivo, 'w') as archivo:
# Escribir el contenido final en el archivo
archivo.write(contenido)
return "Contenido escrito"
def sube(sftp):
excel = globales.excel_results_path + configuracion.sesion + '.xlsx'
#Primero extraemos el dataframe:
dataframe = pd.read_excel(excel)
sesion = configuracion.sesion
base_url = globales.results_url
directorio_remoto = base_url + sesion
print("El directorio remoto o dirección donde se subirá todo es:", directorio_remoto)
#Define ruta de la carpeta remota
#Ésta es la carpeta fija de holocards.
carpeta_remota = nodes.remote_results
print(f"La carpeta remota es: {carpeta_remota}")
directorio_receptor = carpeta_remota + sesion
print(f"El directorio receptor será entonces: {directorio_receptor}.")
#Define ruta de la carpeta local donde se encuentran los resultados.
carpeta_local = globales.imagenes_folder_resultados + sesion + '-results'
try:
#Crea directorio
print("Creando directorio, cuyo nombre será: ", directorio_receptor)
#Si el directorio no existe, si lo está creando bien, checar después que problemas causa q ya exista.
sftp.mkdir(directorio_receptor)
print("Directorio creado...")
except Exception as e:
# Mensaje de error
print(f"Error al crear el directorio, probablemente ya existe: {e}")
#AHORA NECESITAMOS QUE LA LISTA SALGA DEL EXCEL...
print("Ahora vamos a obtener los resultados via la nueva función getNotLoaded()...")
#Parámetros: dataframe, columna_filtro, texto_filtro, columna_destino, columna_source.
#IMPORTANTE: getNotLoaded ya se puede usar para la subida de imagenes source.
#Future: Aquí es donde podría haber una separeción entre getNotLoaded y algo nuevo como getNotXceled.
resultados = tools.getNotLoaded(dataframe, 'Diffusion Status', 'Completed', 'URL', 'File')
print("Estamos a punto de entrar al ciclosubidor y estos son los parámetros que pondremos.")
print(f"resultados: {resultados}, ")
tools.cicloSubidor(sftp, dataframe, resultados, carpeta_local, directorio_receptor, directorio_remoto)
def cierraConexion(ssh, sftp):
"""
Sube una carpeta local completa a una carpeta remota.
Parameters:
archivo (str): Contenido que será agregado a esa celda.
Returns:
dataframe:Regresa dataframe.
"""
sftp.close()
ssh.close()