Script Menu en Python - Automatizacion avanzada

Script Menu en Python - Automatizacion avanzada

Aprende a crear un script menu en Python 3 para automatizar tareas, instalaciones y mas. Guia completa con codigo avanzado y ejemplos practicos.

La mejor manera para poder automatizar tareas, instalaciones, copias de seguridad y mas creando un script menu en lenguaje Python. El mejor lenguaje hasta el momento para poder crear scripts en informatica.

Gracias a las distribuciones de GNU/Linux tenemos una gran variedad de sistemas operativos, donde es compatible instalar este lenguaje y de esta manera sera mas facil hacer pruebas, desde la comodidad de un hogar o zona de trabajo.


Requisitos para crear script menu en Python#

Instalacion en diferentes sistemas#

Termux (Android):

Terminal window
pkg update && pkg upgrade -y
pkg install python
nano menu.py

Linux (Debian/Ubuntu):

Terminal window
sudo apt update && sudo apt upgrade -y
sudo apt install python3 python3-pip
nano menu.py

Windows:


Estructura avanzada del script menu#

1. Shebang y configuracion inicial#

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Script Menu en Python 3
Version: 2.0
Autor: Tu Nombre
Descripcion: Menu interactivo para automatizacion de tareas
"""

2. Importacion de librerias#

import os
import sys
import time
import subprocess
import platform
from datetime import datetime
from colorama import init, Fore, Back, Style
# Inicializar colorama para colores en consola
init(autoreset=True)

3. Configuracion de colores#

# Colores para la consola
class Colors:
GREEN = Fore.GREEN
RED = Fore.RED
YELLOW = Fore.YELLOW
BLUE = Fore.BLUE
CYAN = Fore.CYAN
MAGENTA = Fore.MAGENTA
WHITE = Fore.WHITE
RESET = Style.RESET_ALL
BOLD = Style.BRIGHT

4. Funcion para limpiar pantalla#

def clear_screen():
"""Limpia la pantalla segun el sistema operativo"""
if platform.system() == "Windows":
os.system('cls')
else:
os.system('clear')

5. Funcion para mostrar el menu#

def show_menu():
"""Muestra el menu principal con colores y formato"""
clear_screen()
print(Colors.BOLD + Colors.CYAN + "=" * 60)
print(Colors.BOLD + Colors.GREEN + " MENU PRINCIPAL PYTHON v2.0")
print(Colors.BOLD + Colors.CYAN + "=" * 60)
print("")
print(Colors.YELLOW + " 1" + Colors.WHITE + " - Gestion de archivos")
print(Colors.YELLOW + " 2" + Colors.WHITE + " - Informacion del sistema")
print(Colors.YELLOW + " 3" + Colors.WHITE + " - Respaldo de archivos")
print(Colors.YELLOW + " 4" + Colors.WHITE + " - Instalacion de paquetes")
print(Colors.YELLOW + " 5" + Colors.WHITE + " - Monitoreo de red")
print(Colors.YELLOW + " 6" + Colors.WHITE + " - Automatizacion de tareas")
print(Colors.YELLOW + " 7" + Colors.WHITE + " - Gestion de procesos")
print(Colors.YELLOW + " 8" + Colors.WHITE + " - Logs y depuracion")
print(Colors.YELLOW + " 9" + Colors.WHITE + " - Configuracion del script")
print(Colors.RED + " 0" + Colors.WHITE + " - Salir")
print("")
print(Colors.CYAN + "=" * 60)
print(Colors.BOLD + Colors.GREEN + f" Fecha: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
print(Colors.CYAN + "=" * 60)

6. Funciones para cada opcion#

Gestion de archivos#

def file_management():
"""Gestion basica de archivos y directorios"""
clear_screen()
print(Colors.BOLD + Colors.BLUE + "=== GESTION DE ARCHIVOS ===")
print(Colors.CYAN + "-" * 40)
current_dir = os.getcwd()
print(f"Directorio actual: {Colors.GREEN}{current_dir}")
print("\n1 - Listar archivos")
print("2 - Crear directorio")
print("3 - Eliminar archivo")
print("4 - Mover archivo")
print("5 - Copiar archivo")
print("0 - Volver al menu principal")
option = input(f"\n{Colors.YELLOW}Selecciona una opcion: {Colors.WHITE}")
if option == "1":
files = os.listdir()
print(f"\n{Colors.CYAN}Archivos y directorios:")
for file in files:
if os.path.isdir(file):
print(f"📁 {Colors.BLUE}{file}")
else:
print(f"📄 {Colors.WHITE}{file}")
elif option == "2":
dir_name = input("Nombre del directorio: ")
try:
os.mkdir(dir_name)
print(f"{Colors.GREEN}Directorio '{dir_name}' creado correctamente")
except FileExistsError:
print(f"{Colors.RED}El directorio ya existe")
except Exception as e:
print(f"{Colors.RED}Error: {e}")
elif option == "3":
file_name = input("Nombre del archivo a eliminar: ")
try:
if os.path.exists(file_name):
confirm = input(f"¿Eliminar '{file_name}'? (s/n): ")
if confirm.lower() == 's':
os.remove(file_name)
print(f"{Colors.GREEN}Archivo eliminado correctamente")
else:
print(f"{Colors.RED}El archivo no existe")
except Exception as e:
print(f"{Colors.RED}Error: {e}")
elif option == "4":
source = input("Archivo origen: ")
destination = input("Archivo destino: ")
try:
if os.path.exists(source):
os.rename(source, destination)
print(f"{Colors.GREEN}Archivo movido correctamente")
else:
print(f"{Colors.RED}El archivo origen no existe")
except Exception as e:
print(f"{Colors.RED}Error: {e}")
elif option == "5":
source = input("Archivo origen: ")
destination = input("Archivo destino: ")
try:
if os.path.exists(source):
import shutil
shutil.copy2(source, destination)
print(f"{Colors.GREEN}Archivo copiado correctamente")
else:
print(f"{Colors.RED}El archivo origen no existe")
except Exception as e:
print(f"{Colors.RED}Error: {e}")
input(f"\n{Colors.YELLOW}Presiona Enter para continuar...")

Informacion del sistema#

def system_info():
"""Muestra informacion detallada del sistema"""
clear_screen()
print(Colors.BOLD + Colors.BLUE + "=== INFORMACION DEL SISTEMA ===")
print(Colors.CYAN + "-" * 40)
print(f"{Colors.GREEN}Sistema operativo: {platform.system()}")
print(f"{Colors.GREEN}Version: {platform.version()}")
print(f"{Colors.GREEN}Arquitectura: {platform.machine()}")
print(f"{Colors.GREEN}Procesador: {platform.processor()}")
print(f"{Colors.GREEN}Hostname: {platform.node()}")
print(f"{Colors.GREEN}Python version: {sys.version}")
if platform.system() != "Windows":
try:
# Informacion de memoria
result = subprocess.run(['free', '-h'], capture_output=True, text=True)
print(f"\n{Colors.CYAN}--- Memoria ---")
print(result.stdout)
# Informacion de CPU
result = subprocess.run(['nproc'], capture_output=True, text=True)
print(f"{Colors.CYAN}Nucleos de CPU: {result.stdout.strip()}")
# Espacio en disco
result = subprocess.run(['df', '-h', '/'], capture_output=True, text=True)
print(f"\n{Colors.CYAN}--- Espacio en disco ---")
print(result.stdout)
except:
pass
input(f"\n{Colors.YELLOW}Presiona Enter para continuar...")

Respaldo de archivos#

def backup_files():
"""Realiza copias de seguridad de archivos"""
clear_screen()
print(Colors.BOLD + Colors.BLUE + "=== RESPALDO DE ARCHIVOS ===")
print(Colors.CYAN + "-" * 40)
source = input("Directorio origen (./ para actual): ")
destination = input("Directorio destino (./backup): ")
if destination == "":
destination = "./backup"
try:
import shutil
from datetime import datetime
# Crear carpeta de backup con timestamp
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
backup_dir = f"{destination}_{timestamp}"
print(f"\n{Colors.YELLOW}Creando respaldo en: {backup_dir}")
if os.path.exists(source):
shutil.copytree(source, backup_dir)
print(f"{Colors.GREEN}Respaldo completado exitosamente")
print(f"{Colors.GREEN}Archivos respaldados: {len(os.listdir(backup_dir))}")
else:
print(f"{Colors.RED}El directorio origen no existe")
except FileExistsError:
print(f"{Colors.RED}El directorio de respaldo ya existe")
except Exception as e:
print(f"{Colors.RED}Error: {e}")
input(f"\n{Colors.YELLOW}Presiona Enter para continuar...")

Instalacion de paquetes#

def install_packages():
"""Instala paquetes desde diferentes gestores"""
clear_screen()
print(Colors.BOLD + Colors.BLUE + "=== INSTALACION DE PAQUETES ===")
print(Colors.CYAN + "-" * 40)
print("1 - Instalar paquete con pip (Python)")
print("2 - Instalar paquete con apt (Linux)")
print("3 - Ver paquetes instalados")
print("4 - Actualizar paquetes")
print("0 - Volver")
option = input(f"\n{Colors.YELLOW}Selecciona una opcion: {Colors.WHITE}")
if option == "1":
package = input("Nombre del paquete Python: ")
try:
subprocess.run([sys.executable, '-m', 'pip', 'install', package], check=True)
print(f"{Colors.GREEN}Paquete '{package}' instalado correctamente")
except subprocess.CalledProcessError:
print(f"{Colors.RED}Error al instalar el paquete")
elif option == "2" and platform.system() != "Windows":
package = input("Nombre del paquete: ")
try:
subprocess.run(['sudo', 'apt', 'install', '-y', package], check=True)
print(f"{Colors.GREEN}Paquete '{package}' instalado correctamente")
except subprocess.CalledProcessError:
print(f"{Colors.RED}Error al instalar el paquete")
elif option == "3":
result = subprocess.run([sys.executable, '-m', 'pip', 'list'], capture_output=True, text=True)
print(f"\n{Colors.CYAN}{result.stdout}")
elif option == "4":
try:
subprocess.run([sys.executable, '-m', 'pip', 'install', '--upgrade', 'pip'], check=True)
print(f"{Colors.GREEN}Pip actualizado correctamente")
except:
print(f"{Colors.RED}Error al actualizar pip")
input(f"\n{Colors.YELLOW}Presiona Enter para continuar...")

Monitoreo de red#

def network_monitor():
"""Monitorea el estado de la red"""
clear_screen()
print(Colors.BOLD + Colors.BLUE + "=== MONITOREO DE RED ===")
print(Colors.CYAN + "-" * 40)
if platform.system() != "Windows":
try:
# Ping a google
result = subprocess.run(['ping', '-c', '4', 'google.com'], capture_output=True, text=True)
print(f"{Colors.CYAN}--- Ping a Google ---")
print(result.stdout)
# Mostrar interfaces de red
result = subprocess.run(['ip', 'addr'], capture_output=True, text=True)
print(f"\n{Colors.CYAN}--- Interfaces de red ---")
print(result.stdout)
except:
print(f"{Colors.RED}Error al ejecutar comandos de red")
else:
try:
result = subprocess.run(['ping', '-n', '4', 'google.com'], capture_output=True, text=True)
print(f"{Colors.CYAN}--- Ping a Google ---")
print(result.stdout)
except:
print(f"{Colors.RED}Error al ejecutar ping")
input(f"\n{Colors.YELLOW}Presiona Enter para continuar...")

Automatizacion de tareas#

def task_scheduler():
"""Programa tareas automaticas"""
clear_screen()
print(Colors.BOLD + Colors.BLUE + "=== AUTOMATIZACION DE TAREAS ===")
print(Colors.CYAN + "-" * 40)
print("1 - Ejecutar comando personalizado")
print("2 - Crear tarea programada")
print("3 - Ver tareas activas")
print("0 - Volver")
option = input(f"\n{Colors.YELLOW}Selecciona una opcion: {Colors.WHITE}")
if option == "1":
command = input("Comando a ejecutar: ")
try:
result = subprocess.run(command, shell=True, capture_output=True, text=True)
print(f"\n{Colors.CYAN}Resultado:")
print(result.stdout)
if result.stderr:
print(f"{Colors.RED}Errores:")
print(result.stderr)
except Exception as e:
print(f"{Colors.RED}Error: {e}")
elif option == "2" and platform.system() != "Windows":
task = input("Tarea a programar (ej: 'echo Hola > /tmp/test.txt'): ")
time_str = input("Tiempo en minutos para ejecutar: ")
try:
minutes = int(time_str)
print(f"{Colors.YELLOW}Tarea programada en {minutes} minutos...")
time.sleep(minutes * 60)
subprocess.run(task, shell=True)
print(f"{Colors.GREEN}Tarea ejecutada correctamente")
except ValueError:
print(f"{Colors.RED}Tiempo invalido")
except KeyboardInterrupt:
print(f"{Colors.YELLOW}Tarea cancelada")
except Exception as e:
print(f"{Colors.RED}Error: {e}")
input(f"\n{Colors.YELLOW}Presiona Enter para continuar...")

7. Funcion principal del menu#

def main():
"""Funcion principal del script"""
while True:
show_menu()
option = input(f"{Colors.YELLOW}Selecciona una opcion (0-9): {Colors.WHITE}")
if option == "1":
file_management()
elif option == "2":
system_info()
elif option == "3":
backup_files()
elif option == "4":
install_packages()
elif option == "5":
network_monitor()
elif option == "6":
task_scheduler()
elif option == "7":
# Gestion de procesos
clear_screen()
print(Colors.BOLD + Colors.BLUE + "=== GESTION DE PROCESOS ===")
print(Colors.CYAN + "-" * 40)
if platform.system() != "Windows":
result = subprocess.run(['ps', 'aux'], capture_output=True, text=True)
print(result.stdout[:2000]) # Limitar salida
else:
result = subprocess.run(['tasklist'], capture_output=True, text=True)
print(result.stdout[:2000])
input(f"\n{Colors.YELLOW}Presiona Enter para continuar...")
elif option == "8":
# Logs y depuracion
clear_screen()
print(Colors.BOLD + Colors.BLUE + "=== LOGS Y DEPURACION ===")
print(Colors.CYAN + "-" * 40)
print("1 - Ver log del sistema")
print("2 - Crear archivo de log")
print("3 - Limpiar logs")
log_option = input(f"\n{Colors.YELLOW}Selecciona una opcion: {Colors.WHITE}")
if log_option == "1":
try:
with open('/var/log/syslog', 'r') as f:
lines = f.readlines()[-20:] # Ultimas 20 lineas
print(f"\n{Colors.CYAN}{''.join(lines)}")
except:
print(f"{Colors.RED}No se puede leer el log del sistema")
elif log_option == "2":
log_file = f"log_{datetime.now().strftime('%Y%m%d')}.txt"
with open(log_file, 'w') as f:
f.write(f"Log generado: {datetime.now()}\n")
f.write("Script menu Python v2.0\n")
print(f"{Colors.GREEN}Log creado: {log_file}")
input(f"\n{Colors.YELLOW}Presiona Enter para continuar...")
elif option == "9":
# Configuracion del script
clear_screen()
print(Colors.BOLD + Colors.BLUE + "=== CONFIGURACION ===")
print(Colors.CYAN + "-" * 40)
print(f"{Colors.GREEN}Script: menu.py")
print(f"{Colors.GREEN}Version: 2.0")
print(f"{Colors.GREEN}Python: {sys.version}")
print(f"{Colors.GREEN}Directorio: {os.getcwd()}")
print(f"\n{Colors.YELLOW}Opciones de configuracion:")
print("1 - Cambiar directorio de trabajo")
print("2 - Ver variables de entorno")
config_option = input(f"\n{Colors.YELLOW}Selecciona una opcion: {Colors.WHITE}")
if config_option == "1":
new_dir = input("Nuevo directorio: ")
try:
os.chdir(new_dir)
print(f"{Colors.GREEN}Directorio cambiado a: {os.getcwd()}")
except:
print(f"{Colors.RED}Error al cambiar directorio")
elif config_option == "2":
for key, value in os.environ.items():
print(f"{Colors.CYAN}{key}: {value[:50]}...")
input(f"\n{Colors.YELLOW}Presiona Enter para continuar...")
elif option == "0":
print(f"\n{Colors.GREEN}¡Hasta luego!")
sys.exit(0)
else:
print(f"\n{Colors.RED}Opcion no valida. Intenta de nuevo.")
time.sleep(2)

8. Punto de entrada#

if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
print(f"\n{Colors.YELLOW}Script interrumpido por el usuario")
sys.exit(0)
except Exception as e:
print(f"\n{Colors.RED}Error fatal: {e}")
sys.exit(1)

Codigo completo#

Puedes descargar el codigo completo desde el siguiente enlace:

GitHub: menupy


Explicacion de mejoras avanzadas#

Estructura modular#

El codigo esta organizado en funciones independientes, lo que facilita el mantenimiento y la escalabilidad. Cada funcion tiene una responsabilidad unica y puede ser modificada sin afectar al resto del sistema.

Manejo de errores robusto#

Se utilizan bloques try-except para capturar y manejar errores de manera elegante, evitando que el script se detenga abruptamente.

Compatibilidad multiplataforma#

El script detecta automaticamente el sistema operativo y adapta los comandos y comportamientos segun sea necesario.

Colores y formato#

Se utiliza la libreria colorama para agregar colores y formato a la salida en consola, mejorando la experiencia de usuario.

Funcionalidades avanzadas#


Requisitos adicionales#

Para ejecutar este script necesitas instalar la libreria colorama:

Terminal window
pip install colorama

Como ejecutar el script#

Terminal window
python3 menu.py

O hacerlo ejecutable:

Terminal window
chmod +x menu.py
./menu.py

Conclusion#

Este script menu en Python 3 es una herramienta versatil y potente para automatizar tareas en diferentes sistemas operativos. Con su estructura modular y manejo de errores robusto, es ideal tanto para principiantes como para usuarios avanzados.

Recomendaciones finales#

Reflexion final#

Python es un lenguaje increiblemente versatil que permite crear herramientas poderosas en pocas lineas de codigo. Con este script menu, tienes la base para construir herramientas de automatizacion adaptadas a tus necesidades.

Nota: Este script es una herramienta educativa y de automatizacion. Utilizalo de manera responsable y respetando las politicas de los sistemas donde lo ejecutes.

Comunidad TodoReal

¿Te sirvió esta guía o herramienta?

Únete a nuestro canal en Telegram o WhatsApp para no perderte actualizaciones, nuevos servidores y guías avanzadas.

Comentarios

Comparte tu opinión sobre esta publicación.