def ReporteEjecutivo(): try: ReporteFinanciero = pros.GenerarMapeo(dataused) data = pros.ConversionDataEjecutiva(ReporteFinanciero) pros.GenerarReporteEjecutivo(data) except: log.error('Error al Generar Reporte Ejecutivo.... Estado NoOK\n')
def Ejecut(self): if self.pathh == "": self.ui.Estado_L.setText("Seleccione una Imagen") return selMOD = self.ui.Modo.currentText() if self.ui.Password.text() == "": self.ui.Estado_L.setText("Ingrese una contraseña") return Password_text = self.ui.Password.text() if len(Password_text) != 8: self.ui.Estado_L.setText("La contraseña debe ter 8 digitos") return if selMOD == "Modo_ECB": selMOD = DES.MODE_ECB elif selMOD == "Modo_CBC": selMOD = DES.MODE_CBC elif selMOD == "Modo_CFB": selMOD = DES.MODE_CFB elif selMOD == "Modo_OFB": selMOD = DES.MODE_OFB if self.ui.Encry.isChecked(): flag = Pro.Cifrar(Password_text, selMOD, self.pathh) if flag: self.ui.Estado_L.setText("Cifrado") else: self.ui.Estado_L.setText("Error al Cifrar") elif self.ui.Descry.isChecked(): flag = Pro.DesCifrar(Password_text, selMOD, self.pathh) if flag: self.ui.Estado_L.setText("DesCifrado") else: self.ui.Estado_L.setText("Error al DesCifrar") else: self.ui.Estado_L.setText("Seleccione una accion") return
def EjecutarF(self): if (self.ui.FirmaradioButton.isChecked()): if (self.pathArchivo != "" and self.pathLlave != ""): flag = Procesos.FirmaDigital(self.pathArchivo, self.pathLlave) if flag: self.ui.EstatusN.setText("Archivo Firmado Correctamente") else: self.ui.EstatusN.setText( "Error al firmar el archivo, ingrese la llave Correcta" ) else: self.ui.EstatusN.setText("Seleccione los archivos necesarios") elif (self.ui.VerifiradioButton.isChecked()): if (self.pathArchivo != "" and self.pathLlave != ""): flag = Procesos.Verificacion(self.pathArchivo, self.pathLlave) if flag: self.ui.EstatusN.setText("Archivo Verificado") else: self.ui.EstatusN.setText( "Error al Verificar, ingrese la llave Correcta") else: self.ui.EstatusN.setText("Seleccione los archivos necesarios") else: self.ui.EstatusN.setText("Seleccione una Opcion")
def matar_proceso(proceso_a_matar): try: int(proceso_a_matar) proceso = buscar_procesos(proceso_a_matar,"PID") except: proceso = buscar_procesos(proceso_a_matar,"Nombre") #Verificamos que el proceso que deseamos eliminar exista if len(proceso) > 1: #Mostramos el/procesos que coincidieron con los criterios de busqueda print("\nA continuación se muestran los procesos relacionados con {}: \n".format(proceso_a_matar)) pr.mostrar_procesos_usarios(proceso) #Confirmamos el PID del proceso a eliminar pid = input("\nConfirme el PID del proceso que desea matar: ") #Obtenemos la lista de los PPID del sistema para confirmar si el proceso es padre o hijo lista_procesos = pr.listar_procesos() lista_PPID = [proceso[2] for proceso in lista_procesos] #Extraemos los PID para que el usuario confirme el proceso a eliminar lista_pid = [elemento[1] for elemento in proceso[1:]] #Si el proceso está en la lista de PID y en lalista de PPID es un proceso padre if pid in lista_pid and pid in lista_PPID: #Informamos que está a punto de matar un proceso padre msg.mostrar_mensaje("El proceso que desea matar es un proceso padre") #Solicitamos que confirme si desea matar el proceso confirmacion = input("Está seguro que desea matarlo (y/n): ") #Si confirma se matan los procesos hijos y posteriormente se mata al padre if confirmacion == "y": subprocess.check_output("kill {}".format(pid),shell=True) subprocess.check_output("pkill -TERM -P {}".format(pid),shell=True) #Si deniega se interrumpe la operación else: msg.mostrar_mensaje("Operación cancelada") #Si el proceso está en la lista de pid pero no en la de PPID es un proceso hijo elif pid in lista_pid: #Informamos que está a punto de matar a un proceso hjo msg.mostrar_mensaje("El proceso que desea matar es un proceso hijo") #Solicitamos que confirme si desea matar el proceso confirmacion = input("Está seguro que desea matar (y/n): ") #Si confirma matamos el proceso if confirmacion == "y": subprocess.check_output("kill {}".format(pid),shell=True) #Si deniega se cancela la operación else: msg.mostrar_mensaje("Operación cancelada") #Si el proceso no está en la lista de PID para la confirmación, el usuario ingresó un PID invalido else: msg.mostrar_mensaje("ERROR: el proceso {} no es una confirmación valida".format(pid)) #Si el proceso no existe devolvemos un mensaje de error else: msg.mostrar_mensaje("ERROR: el proceso {} no existe".format(proceso_a_matar))
def ModOrigin(path): try: for data in dataused: pros.escritura(data, path) log.info('Proceso de Modificacion de archivo ' + path + 'completado......Estado OK\n') return ('Proceso de Modificacion de archivo ' + path + 'completado......Estado OK\n') except: log.error('Proceso de Modificacion de archivo ' + path + ' incompleto......Estado NoOK\n') return ('Proceso de Modificacion de archivo ' + path + ' incompleto......Estado NoOK\n')
def lanzar(): if not flask.request.json or not 'programa' in flask.request.json: mensaje = {'Mensaje': Constantes.ingreseDatos} return response(mensaje, 404) data = Procesos.lanzarProcesos(flask.request.json['programa']) mensaje = {'Process': flask.request.json['programa']} return response(mensaje, 200)
def listar_usuarios(): procesos = pr.listar_procesos(True) #Creamos una lista con los id de los usuarios lista_id = [proceso[3] for proceso in procesos] #Buscamos los id unicos id_unicos = set(lista_id[1:]) #Buscamos el nombre de usuario correspondiente a cada id usuarios = {} for id in id_unicos: #Creamos el comando unix para buscar el nombre de usuario comando = "getent passwd | awk -F: '$3 ==" + id + " { print $1 }'" #Buscamos el nombre de usuario usuario = subprocess.check_output(comando, shell=True) #Convertimos el nombre de usuario a string usuario = str(usuario) #Realizamos la limieza del nombre de usuario usuario = usuario.replace("b'", "") usuario = usuario.replace(r"\n'", "") #Guardamos el nombre de usuario en un diccionario usuarios[id] = usuario lista_usuarios = [[usuarios[usuario_id], usuario_id] for usuario_id in usuarios] return lista_usuarios
def listarProceso(pid): data = Procesos.listaProcesos(pid) if data == Constantes.noExistePorceso: mensaje = {'Mensaje': data, 'PID': pid} return response(mensaje, 404) return response(data, 200)
def filtrar(): count = 0 try: for data in dataclear: respuesta = pros.validateFilter(data) if (respuesta == 1): datafilter.append(data) count = count + 1 if (respuesta == 2): dataused.append(data) if (respuesta == 3): log.error("Error Filtrando Data......Proceso no Ok\n" + "Cantidad de Registros filtrados: " + str(count) + '\n') return ("Error Filtrando Data......Proceso no Ok\n" + "Cantidad de Registros filtrados: " + str(count) + "\n") dataclear.clear() log.info("Proceso de Filtrado completo.......Proceso OK\n" + "Cantidad de Registros Filtrados: " + str(count) + '\n') TotalRegistrosfiltrados = count return ("Proceso de Filtrado completo.......Proceso OK\n" + "Cantidad de Registros Filtrados: " + str(count) + '\n') except: log.error("Error Filtrando Data......Proceso no Ok\n" + "Cantidad de Registros filtrados: " + str(count) + '\n') return ("Error Filtrando Data......Proceso no Ok\n" + "Cantidad de Registros filtrados: " + str(count) + '\n')
def ValidarDocumento(path): try: respuesta = pros.validaFormat(path) log.info('Archivo: ' + path + 'Validado Correctamente') return (respuesta) except: log.error('Archivo: ' + path + 'Error al intentar Validar documento')
def mostrar_usuarios(matriz): lista_usuarios = matriz lista_usuarios = [["USUARIO", "UID"]] + lista_usuarios longitud_uid = pr.longitud_maxima(lista_usuarios, 0) longitud_usr = pr.longitud_maxima(lista_usuarios, 1) usuarios = [[ "|" + usuario[0] + " " * (longitud_uid - len(usuario[0])), "|" + usuario[1] + " " * (longitud_usr - len(usuario[1])) + "|", ] for usuario in lista_usuarios] print(" " + "-" * (longitud_uid + longitud_usr + 2)) print(usuarios[0][0], usuarios[0][1]) print(" " + "-" * (longitud_uid + longitud_usr + 2)) for usuario in usuarios[1:]: print(usuario[0], usuario[1]) print(" " + "-" * (longitud_uid + longitud_usr + 2))
def CargarFiltrado(path): try: for data in datafilter: pros.escritura(data, path) log.info( 'Proceso de Carga de archivo Registros para ser revisados.txt completado......Estado OK\n' ) return ( 'Proceso de Carga de archivo Registros para ser revisados.txt completado......Estado OK\n' ) except: log.error( 'Proceso de Carga de archivo Registros para ser revisados.txt incompleto......Estado NoOK\n' ) return ( 'Proceso de Carga de archivo Registros para ser revisados.txt incompleto......Estado NoOK\n' )
def Ejecutar(self): if (self.ui.EmisorRadioButton.isChecked()): if (self.pathArchivo != "" and self.LlaveEmisorPath != "" and self.LlaveReceptorPath != ""): flag, num = Procesos.Emisor(self.pathArchivo, self.LlaveEmisorPath, self.LlaveReceptorPath) if flag: self.ui.Estatus.setText("Archivo Procesado Correctamente") else: if num == 1: self.ui.Estatus.setText( "Error en la llave del Receptor") elif num == 2: self.ui.Estatus.setText("Error en la llave del Emisor") elif num == 3: self.ui.Estatus.setText("Error al procesar el archivo") else: self.ui.Estatus.setText("Seleccione los archivos necesarios") elif (self.ui.ReceptorRadioButton.isChecked()): if (self.pathArchivo != "" and self.LlaveEmisorPath != "" and self.LlaveReceptorPath != ""): flag, num = Procesos.Receptor(self.pathArchivo, self.LlaveEmisorPath, self.LlaveReceptorPath) if flag: self.ui.Estatus.setText("Archivo Correcto") else: if num == 1: self.ui.Estatus.setText( "Error en la llave del Receptor") elif num == 2: self.ui.Estatus.setText("Error en la llave del Emisor") elif num == 3: self.ui.Estatus.setText( "Error al verificar el archivo, Error de Autenticacion" ) else: self.ui.Estatus.setText("Seleccione los archivos necesarios") else: self.ui.Estatus.setText("Seleccione una Opcion")
def matar(): if (not flask.request.json or not 'pid' in flask.request.json): mensaje = {'Mensaje': Constantes.ingreseDatos} return response(mensaje, 400) pid = int(flask.request.json['pid']) data = Procesos.matarProcesos(pid) if data == Constantes.noExistePorceso: mensaje = {'Mensaje': data, 'PID': pid} return response(mensaje, 404) return response(data, 200)
def ReporteTecnico(TotalRgistros, TiempoReparacio, TiempoFiltrado, TiempoRecargaArchivoOri, TiempoGeneracionReportes, TiempoTotalEjecucion): try: pros.GenerarReporteEjecucion(TotalRgistros, TotalRegistrosReparado, TotalRegistrosfiltrados, TiempoReparacio, TiempoFiltrado, TiempoRecargaArchivoOri, TiempoGeneracionReportes, TiempoTotalEjecucion) except: log.error('Errror Al generar Reporte Tecnico.... Estado NoOK\n')
def Reparar(): count = 0 try: for data in datafull: Result = pros.searchSpace(data) if (Result > 0): count = count + Result clearLine = pros.buildLine(data) dataclear.append(clearLine) else: dataclear.append(data) log.info('Proceso de Reparacion Completado.....Estado OK' + 'Cantidad de Registros Reparados: ' + str(count) + '\n') TotalRegistrosReparado = count return ('Proceso de Reparacion Completado.....Estado OK' + 'Cantidad de Registros Reparados: ' + str(count) + '\n') except: log.error('Proceso de Reparacion No Completados.....Estado NoOK\n' + 'Verificar Rura o Formato del documento analizado\n') return ('Proceso de Reparacion No Completados.....Estado NoOK\n' + 'Verificar Rura o Formato del documento analizado\n')
def Ejecutar(self): if (self.ui.CifradoradioButton.isChecked()): if (self.pathArchivo != "" and self.pathLlave != ""): flag = Procesos.Cifrar(self.pathArchivo, self.pathLlave) if flag: self.ui.Estatus.setText("Archivo Cifrado Correctamente") else: self.ui.Estatus.setText( "Error al cifrar, ingrese la llave Correcta") else: self.ui.Estatus.setText("Seleccione los archivos necesarios") elif (self.ui.DescifradoradioButton.isChecked()): if (self.pathArchivo != "" and self.pathLlave != ""): flag = Procesos.DesCifrar(self.pathArchivo, self.pathLlave) if flag: self.ui.Estatus.setText("Archivo Descifrado Correctamente") else: self.ui.Estatus.setText( "Error al descifrar, ingrese la llave Correcta") else: self.ui.Estatus.setText("Seleccione los archivos necesarios") else: self.ui.Estatus.setText("Seleccione una Opcion")
def lectura(path): Tinicio = time() data = open(path, 'r') titulo = data.readline() pros.resetFile('Registros para ser revisados.txt') for linea in data: datafull.append(linea) TotalRgistros = len(datafull) TRini = time() Registros_reparados = Reparar() Registros_totales = 'Total de Registros para analizar: ' + str( len(datafull)) + '\n' datafull.clear() TRfin = time() TiempoReparacio = round(TRfin - TRini, 3) TFini = time() Registros_filtrados = filtrar() pros.escritura(titulo, 'Registros para ser revisados.txt') Respuesta_Carga_Filter = CargarFiltrado('Registros para ser revisados.txt') datafilter.clear() TFfin = time() TiempoFiltrado = round(TFfin - TFini, 3) TROini = time() pros.resetFile(path) pros.escritura(titulo, path) Respuesta_mod_Origin = ModOrigin(path) TROfin = time() TiempoRecargaArchivoOri = round(TROfin - TROini, 3) TRPini = time() ReporteEjecutivo() dataused.clear() data.close() TRPfin = time() TiempoGeneracionReportes = round(TRPfin - TRPini, 3) Tfinal = time() Tejecucion = round((Tfinal - Tinicio), 3) TiempoTotalEjecucion = Tejecucion ReporteTecnico(TotalRgistros, TiempoReparacio, TiempoFiltrado, TiempoRecargaArchivoOri, TiempoGeneracionReportes, TiempoTotalEjecucion) Detalle_proceso = Registros_totales + Registros_reparados + Registros_filtrados + Respuesta_Carga_Filter + Respuesta_mod_Origin + 'Tiempo total de ejecucion en Segundos: ' + str( Tejecucion) + '\n' return (Detalle_proceso)
def repriorizar(): if (not flask.request.json or not 'NI' in flask.request.json) or ( not 'pid' in flask.request.json): mensaje = {'Mensaje': Constantes.ingreseDatos} return response(mensaje, 400) intNI = int(flask.request.json['NI']) pid = int(flask.request.json['pid']) if intNI < -20 or intNI > 20: mensaje = {'Mensaje': 'prioridades -20 hasta 20', 'PID': pid} return response(mensaje, 400) data = Procesos.repriorizarProceso(pid, intNI) if data == Constantes.noExistePorceso: mensaje = {'Mensaje': data, 'PID': flask.request.json['pid']} return response(mensaje, 404) return response(data, 200)
def buscar_procesos(proceso_buscado,tipo): #Lista de procesos sobre la que buscará procesos = pr.listar_procesos(True) if tipo == "PID": #PID del proceso que se desea buscar proceso_busqueda = proceso_buscado #Se busca el proceso proceso_encontrado = [proceso for proceso in procesos[1:] if proceso_busqueda == proceso[1]] if tipo == "Nombre": #PID del proceso que se desea buscar proceso_busqueda = proceso_buscado #Se busca el proceso proceso_encontrado = [proceso for proceso in procesos[1:] if proceso_busqueda == proceso[0]] proceso_encontrado = [procesos[0]]+proceso_encontrado return proceso_encontrado
#Mensajes de opciones del menú opciones = [ "1. Mostrar procesos del sistema", "2. Mostrar usuarios y sus procesos", "3. Matar procesos", "0. Cerrar administrador" ] #Se imprime el menú principal msg.mensajes_menu_principal(opciones) #Se pide al usuario la opción del menú opcion = input("Seleccione una opción: ") #Control de opciones if (opcion == "1"): lista_procesos = pr.listar_procesos() pr.mostrar_procesos(lista_procesos) elif (opcion == "2"): lista_procesos_usuarios = pr.listar_procesos(True) pr.mostrar_procesos_usarios(lista_procesos_usuarios) elif (opcion == "3"): proceso_a_matar = input("Ingrese el Nombre o PID del proceso: ") if proceso_a_matar == "1": msg.mostrar_mensaje( "Operación denegada: este proceso no se puede matar") else: mp.matar_proceso(proceso_a_matar) elif (opcion == "0"): msg.mostrar_mensaje("Programa terminado") break else:
def listar(): data = Procesos.listaProcesos() return response(data, 200)