PROGRAMACIÓN DE My-Adress (PROGRAMACIÓN)

 Hola gente bonita, en esta ocasión les mostraré el código de la versión 1.0 de "My-Address". 


Este es un proyecto que llevo pensando hace un tiempo pero nunca encontraba la oportunidad de realzarlo. Se trata de una aplicación CLI que recopila los siguientes datos del equipo donde se ejecuta:
  • Nombre del equipo
  • IP Privada
  • IP Pública
  • Dirección MAC del equipo
Posteriormente, estos datos recopilados son enviados a una base de datos.

Este proyecto está pensado para ser ejecutado desde un pendrive o medio extraíble, así se sabe con certeza donde y cuando estuvo, por ejemplo, nuestro pendrive. Para este motivo, luego de terminar de realizar la programación, empaqueté el archivo en formato .exe, esto con una librería llamada "py2exe".
Posteriormente, el ejecutable debe ser copiado en la raíz del pendrive y luego debe configurarse un autorun para que el ejecutable se ejecute al conectar el pendrive al PC.

Hay 2 versiones del programa. Una para ser ejecutada automáticamente y la otra para ser ejecutada manualmente (los cambios son mínimos, la mayor diferencia es que la versión para ser usada automáticamente no muestra los datos en la pantalla y los envía directamente a la base de datos).

Programé el proyecto con el lenguaje de programación Python y el IDE VisualStudio Code. Las librerías que utilicé fueron:
  • socket
  • urllib
  • mysql.connector
  • getmac
  • time
  • subprocess
  • OS
  • py2exe
Código de la aplicación (la parte de la conexión al servidor está censurada por obvias razones): 

import socket
import urllib.request
import mysql.connector
import getmac
import time
import subprocess
import os

#permite manipular la cmd
def cmd(commando):
    subprocess.run(commando, shell=True)

cmd("title MyAddress")
cmd("cls")

print("""
███╗░░░███╗██╗░░░██╗░█████╗░██████╗░██████╗░██████╗░███████╗░██████╗░██████╗
████╗░████║╚██╗░██╔╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔════╝██╔════╝
██╔████╔██║░╚████╔╝░███████║██║░░██║██║░░██║██████╔╝█████╗░░╚█████╗░╚█████╗░
██║╚██╔╝██║░░╚██╔╝░░██╔══██║██║░░██║██║░░██║██╔══██╗██╔══╝░░░╚═══██╗░╚═══██╗
██║░╚═╝░██║░░░██║░░░██║░░██║██████╔╝██████╔╝██║░░██║███████╗██████╔╝██████╔╝
╚═╝░░░░░╚═╝░░░╚═╝░░░╚═╝░░╚═╝╚═════╝░╚═════╝░╚═╝░░╚═╝╚══════╝╚═════╝░╚═════╝░ ver 1.0\n""")

#Nombre del equipo donde se está ejecutando MYADRESS
nombre_equipo_raiz = "Pendrive 1"

#Obtiene la ruta desde donde se está ejeceutando el script
ruta_ejecucucion= (os.path.abspath(os.getcwd()))

#Obtención del nombre del equipo
nombre_equipo = os.getenv("COMPUTERNAME")
print("Nombre del equipo:", nombre_equipo)

#obtencion de la IP PRIVADA
ip_privada = socket.gethostbyname(socket.gethostname())
print("IP PRIVADA: ", ip_privada)
str(ip_privada)

#obtencion de la IP PUBLICA
#Envía una petición a la página dydns y permite obtener la ip pública
lista = "0123456789."
ip_publica = ""
dato=urllib.request.urlopen("http://checkip.dyndns.org").read()
for x in str(dato):
	if x in lista:
		ip_publica += x
str(ip_publica)
print("IP PUBLICA: ",ip_publica)

#Obtención del MAC
mac = (getmac.get_mac_address())
print("Dirección MAC:", mac)

#Obtención de la fecha y hora
fecha = (time.strftime("%y-%m-%d"))
hora = time.strftime("%H:%M:%S")
fecha_hora = fecha + " " + hora
print("Fecha y hora del registro:", fecha_hora)

bucle = True
while bucle == True:
    try:

        #conexion con la base de datos
        db = mysql.connector.connect(
            host="131.108.140.136",                                   
            user="David Vega",                                       
            password="MaincrA1234",                                   
            database="my_usb"                                  
        )

        #Registro en la base de datos
        cursor = db.cursor()
        cursor.execute("INSERT INTO registro (nombre_equipo_raiz, nombre_equipo, ip_publica, ip_privada, mac, ruta_ejecucución, fecha_hora) VALUES (%s,%s,%s,%s,%s,%s,%s)", (nombre_equipo_raiz, nombre_equipo, ip_publica, ip_privada, mac, ruta_ejecucucion, fecha_hora))
        db.commit()

        #Cierre de la base de datos
        cursor.close()
        db.close()
        bucle = False
    except:
        opcion = input("No se ha podido conectar con la base de datos, reintentar? s/n:")
        opcion = opcion.upper()
        if input == "S":
            bucle = True
        else:
            bucle = False

input("Pulse ENTER para salir")

Probablemente en el futuro, saque más versiones de esta herramienta.

Dankon por legu ĉi eniri. Ĝis la revido :3.


Comentarios

Entradas populares de este blog

CÓMO INTERCALAR GIF EN VISUAL STUDIO MEDIANTE BOTONES (TUTORIAL)

CAMBIO DE PILA A NETBOOK (PRÁCTICA)

INSTALACIÓN DE PAQUETE COREL DRAW (PRÁCTICA)