Desarrollado por: Pablo Elías Avendaño Miranda
Ingeniero en Informática
Este repositorio contiene dos proyectos principales de automatizacion desarrollados con enfoque practico y orientados a resolver problemas reales en ambientes educativos y profesionales.
- VeyonScripts: Suite de automatizacion para gestion de laboratorios con Veyon
- Optimizacion Windows 11: Scripts de optimizacion para PCs con recursos limitados (4GB RAM + HDD)
scripts/principales,scripts/diagnosticos,scripts/soluciones,scripts/legacylaunchers/(launchers reales)tools/wakemeonlan/ytools/optimizacion_windows/apps/veyongui/deploy/kit_pendrive/,deploy/admin_winrm/,deploy/componentes_cliente/data/,reports/,backups/- Wrappers
.baten raiz para compatibilidad (VEYON_MAESTRO.bat, etc.)
Suite completa de automatizacion para Veyon (Virtual Eye On Networks), permitiendo la gestion inteligente de laboratorios de computacion con mapeo fisico automatico basado en direcciones MAC.
VeyonScripts/
|-- scripts/ # Scripts organizados
| |-- principales/ # Scripts principales de uso diario
| | |-- VEYON_MAESTRO.py # Script maestro con WakeMeOnLAN
| | `-- MAPEO_FISICO_ADMIN.py # Script de mapeo fisico por MAC
| |-- diagnosticos/ # Scripts de diagnostico
| | |-- diagnostico_veyon.py # Diagnostico general
| | |-- diagnostico_profundo_pc01.py # Diagnostico profundo PC-01
| | |-- comparar_pc01_funcionando.py # Comparador PC-01 vs PC funcionando
| | |-- verificar_claves_veyon.py # Verificador de claves
| | `-- verificar_pc01_remoto.py # Verificador remoto PC-01
| `-- soluciones/ # Scripts de solucion de problemas
| |-- solucion_pc01.py # Solucionador PC-01
| `-- solucionar_clon_pc01.py # Solucionador para clones
|-- apps/veyongui/ # Interfaz grafica visual
| |-- physical_mapping_gui.py # GUI principal funcional
| |-- launch_gui.bat # Launcher de la GUI
| `-- README_GUI.md # Documentacion de la GUI
|-- VEYON_MAESTRO.bat # Launcher script maestro (ADMIN)
|-- MAPEO_FISICO_ADMIN.bat # Launcher mapeo fisico (ADMIN)
|-- SOLUCIONAR_PC01_ADMIN.bat # Launcher solucionador PC-01 (ADMIN)
`-- WakeMeOnLAN.exe # Herramienta de escaneo de red
- Mapeo Fisico por MAC: Asigna numeros de PC basados en direcciones MAC unicas
- Compatibilidad con IPs Dinamicas: Funciona aunque las IPs cambien
- Escaneo con WakeMeOnLAN: Integracion con herramienta profesional de red
- Interfaz Grafica: GUI intuitiva con drag & drop
- Diagnosticos Profundos: Suite completa de herramientas de diagnostico
- Solucion Automatizada: Scripts para resolver problemas comunes
# Mapeo fisico automatico
MAPEO_FISICO_ADMIN.bat
# Interfaz grafica
apps/veyongui/launch_gui.bat
# Script maestro
VEYON_MAESTRO.batAdemas del mapeo y la gestion de Veyon, este repositorio evoluciono para cubrir la operacion diaria del laboratorio por red local:
- Wake-on-LAN masivo: encendido remoto por broadcast usando MACs e IPs reservadas.
- WinRM masivo: ejecucion de scripts en lote sobre los equipos del laboratorio.
- Gestion de energia: despliegue y retiro de tareas programadas de apagado.
- GUI remota asistida: apertura de aplicaciones visibles en la sesion del alumno y envio de teclas.
- Bridge de elevacion: ejecucion de comandos elevados sin depender del prompt UAC.
Esto permite administrar la sala incluso cuando los equipos tienen usuarios locales distintos, estan parcialmente dormidos o requieren automatizacion por lotes.
La operacion remota ahora esta separada en tres carpetas:
deploy/kit_pendrive/: solo material portable/manual para preparar cada PC.deploy/admin_winrm/: scripts que se ejecutan desde el PC administrador sobre toda la sala.deploy/componentes_cliente/: payloads y componentes que luego se copian a los clientes.
PREPARAR_REMOTO_WIN10.bat: prepara cada PC para administracion remota.
EJECUTAR_MASIVO_WINRM.ps1: motor base para ejecutar payloads por WinRM.EJECUTAR_MASIVO_AUTO_CRED.ps1: variante que prueba usuarios locales comunes con una clave compartida.PROGRAMAR_ENERGIA_LAB_WINRM.ps1: crea tarea diaria de apagado cuando se necesita.ENVIAR_WOL_CASTEL.ps1: envio de magic packets para despertar equipos.INSTALAR_GUI_AGENTE_WINRM.ps1: instala el agente GUI por WinRM.ENVIAR_GUI_COMANDO_WINRM.ps1: encola apertura de GUI y teclas como~,1,{TAB},%{F4}.INSTALAR_ELEVACION_WINRM.ps1: instala el bridge y crea la tareaCastel-AdminBridgecomoSYSTEM.ENVIAR_ADMIN_COMANDO_WINRM.ps1: encola comandos elevados y dispara la tarea remota.CASTEL_REMOTO.ps1: orquestador central para operaciones tipicas del laboratorio.
GUI_AGENTE_INTERACTIVO.ps1: agente local que corre dentro de la sesion del usuario.ADMIN_ELEVATION_BRIDGE.ps1: bridge elevado que procesa comandos admin desde cola local.RESET_CHROME_COMPARTIDO.ps1: cierra Chrome y elimina perfiles locales de navegador para dejarlo "como nuevo".PROTEGER_MATERIALES_SALA.ps1: protege carpetas institucionales para que usuarios puedan abrir archivos pero no borrarlos.CREAR_CARPETA_ENTREGA_SALA.ps1: crea una carpeta fija en el escritorio publico con escritura permitida pero borrado denegado.
El encendido se basa en el archivo data/reservas_dhcp_castel.csv, que mantiene:
- Nombre logico del equipo
- Direccion MAC
- IP reservada
Con eso se puede enviar Wake-on-LAN por broadcast a toda la sala sin depender del estado de Veyon.
La administracion remota usa dos capas:
- Capa no interactiva: WinRM ejecuta scripts, consulta estado, modifica tareas programadas, aplica politicas o reinicia servicios.
- Capa interactiva: un agente local en la sesion del usuario recibe comandos en cola y permite abrir GUIs visibles o mandar teclas.
Esto evita el error tipico de intentar controlar ventanas graficas desde Session 0, donde WinRM no tiene escritorio interactivo.
Cuando una acción requiere permisos altos, no se intenta interactuar con la ventana emergente de UAC (User Account Control), la cual está bloqueada para sesiones no interactivas de WinRM. En su lugar, se implementa un diseño de ejecución asíncrono desacoplado:
- Se instala
ADMIN_ELEVATION_BRIDGE.ps1en cada cliente. - Se registra una tarea programada llamada
Castel-AdminBridgeque corre bajo el contexto del usuario especialSYSTEM(con privilegios administrativos máximos y sin restricciones de UAC). - El administrador, a través de WinRM, deposita un comando formateado en JSON en la cola local del cliente:
C:\ProgramData\CastelRemote\admin-queue\. - Acto seguido, WinRM le ordena al programador de tareas iniciar la tarea programada (
schtasks.exe /Run /TN Castel-AdminBridge). - La tarea programada lee los comandos pendientes de la cola, los ejecuta con privilegios de
SYSTEMy guarda los resultados enC:\ProgramData\CastelRemote\admin-processed\.
sequenceDiagram
autonumber
actor Admin as Administrador (WinRM)
participant ClientWinRM as Cliente (WinRM Session 0)
participant Queue as Cola Local (admin-queue/)
participant ScheduledTask as Castel-AdminBridge (Task SYSTEM)
participant Payload as Ejecución Payload (SYSTEM)
participant Processed as Historial (admin-processed/)
Admin->>ClientWinRM: Ejecuta comando admin (ej: ENVIAR_ADMIN_COMANDO_WINRM.ps1)
ClientWinRM->>Queue: Genera archivo de comando JSON (ID único)
ClientWinRM->>ScheduledTask: Ejecuta la tarea remota (schtasks /Run /TN Castel-AdminBridge)
Note over ScheduledTask: Se despierta la tarea en contexto SYSTEM
ScheduledTask->>Queue: Lee y deserializa el archivo JSON pendiente
ScheduledTask->>Payload: Ejecuta el script/comando solicitado (cmd o powershell)
Payload-->>Processed: Escribe el archivo de resultado JSON con StdOut/StdErr
Payload-->>Queue: Elimina el JSON de la cola tras finalizar
ClientWinRM->>Admin: Confirma el encolado exitoso
Con esto se pueden lanzar:
- Scripts
.ps1ya presentes en el cliente - PowerShell inline
- Comandos
cmd
sin requerir interacción física o credenciales interactivas en ventanas emergentes.
Para laboratorios donde alumnos o docentes dejan cuentas abiertas en Chrome, se puede usar un reset masivo:
- Se cierran procesos
chrome.exe. - Se elimina
AppData\Local\Google\Chrome\User Dataen cada perfil local de usuario. - Opcionalmente se puede aplicar politica para bloquear inicio de sesion y sincronizacion.
Esto deja Chrome como recien instalado para el siguiente uso del equipo, sin tener que ir PC por PC borrando perfiles manualmente.
Para evitar que usuarios eliminen documentos compartidos del colegio, el enfoque correcto no es bloquear todo el perfil del usuario, sino proteger carpetas concretas de materiales:
- Se definen carpetas institucionales como
C:\MaterialesSalao equivalentes bajoPublic. - Se ajustan ACLs NTFS para
Users. - Los usuarios pueden abrir y leer archivos.
- Se niega eliminacion de archivos y subcarpetas.
Esto sirve para PDFs, Word, Excel, PowerPoint, plantillas o recursos docentes que deban estar siempre disponibles en todos los equipos.
Tambien se puede crear una carpeta unica en el escritorio compartido, pensada para dejar archivos temporales de trabajo o entrega:
- Ruta sugerida:
C:\Users\Public\Desktop\Entrega Sala - Visible para todos los usuarios del equipo
Userspuede leer y escribirUsersno puede borrar ni la carpeta ni su contenido
Esto sirve cuando se quiere un punto comun de trabajo sin riesgo de que alumnos eliminen materiales o rompan la estructura de la carpeta.
Para simplificar la operacion diaria, el kit incluye un orquestador que centraliza las tareas mas comunes:
- consulta de estado de la sala
- Wake-on-LAN
- instalacion de componentes base
- ejecucion de payloads admin
- lanzamiento de GUI y teclas
- acciones operativas tipicas como reset de Chrome o creacion de carpeta de entrega
Esto reduce la cantidad de comandos distintos que hay que memorizar y baja el riesgo operativo cuando se trabaja rapido en terreno.
- Ejecutar
PREPARAR_REMOTO_WIN10.batuna vez por equipo. - Validar conectividad WinRM.
- Instalar agente GUI con
INSTALAR_GUI_AGENTE_WINRM.ps1. - Instalar bridge admin con
INSTALAR_ELEVACION_WINRM.ps1. - Probar un comando simple por WinRM y uno elevado.
- Enviar Wake-on-LAN a todos los hosts del laboratorio.
- Verificar equipos accesibles por WinRM.
- Ejecutar acciones remotas no interactivas.
- Si una aplicacion requiere interfaz visible, usar
ENVIAR_GUI_COMANDO_WINRM.ps1. - Si requiere privilegios altos, usar
ENVIAR_ADMIN_COMANDO_WINRM.ps1.
Cuando exista una tarea de apagado como JackOptimized-AutoShutdown-1730, debe retirarse por WinRM buscando:
- Tareas conocidas por nombre
- Tareas no-Microsoft que usen
shutdown.exe - Tareas no-Microsoft que usen
logoff.exe
Esto ya se uso con exito en la red del laboratorio para evitar apagados fuera de horario.
# Instalar agente GUI
cd deploy\admin_winrm
.\INSTALAR_GUI_AGENTE_WINRM.ps1
# Abrir Bloc de notas visible en los clientes
.\ENVIAR_GUI_COMANDO_WINRM.ps1 -Action launch -Path "C:\Windows\System32\notepad.exe"
# Enviar Enter a una ventana por titulo
.\ENVIAR_GUI_COMANDO_WINRM.ps1 -Action keys -WindowTitle "Sin titulo: Bloc de notas" -Keys "~"
# Instalar bridge elevado
.\INSTALAR_ELEVACION_WINRM.ps1
# Ejecutar comando admin sin UAC visible
.\ENVIAR_ADMIN_COMANDO_WINRM.ps1 -Action cmd -Command "gpupdate /force"
# Reset total de Chrome en un cliente o grupo
.\ENVIAR_ADMIN_COMANDO_WINRM.ps1 -Action powershell_file -Path "C:\ProgramData\CastelRemote\RESET_CHROME_COMPARTIDO.ps1"
# Proteger carpetas de materiales institucionales
.\ENVIAR_ADMIN_COMANDO_WINRM.ps1 -Action powershell_file -Path "C:\ProgramData\CastelRemote\PROTEGER_MATERIALES_SALA.ps1"
# Crear carpeta fija en el escritorio publico con escritura pero sin borrado
.\ENVIAR_ADMIN_COMANDO_WINRM.ps1 -Action powershell_file -Path "C:\ProgramData\CastelRemote\CREAR_CARPETA_ENTREGA_SALA.ps1"
# Usar el orquestador central
.\CASTEL_REMOTO.ps1 -Action status
.\CASTEL_REMOTO.ps1 -Action reset-chrome -DisableChromeSigninSuite de scripts especializados para optimizar Windows 11 en equipos con recursos limitados (4GB RAM + HDD), mejorando significativamente el rendimiento sin necesidad de actualizar hardware.
optimizacion_windows/
|-- 00_CREAR_PUNTO_RESTAURACION.py # Crear backup antes de optimizar
|-- 01_deshabilitar_servicios.py # Deshabilitar servicios innecesarios
|-- 02_optimizar_rendimiento_visual.py # Optimizar efectos visuales
|-- 03_limpiar_archivos_temp.py # Limpieza profunda de archivos
|-- 04_optimizar_hdd.py # Optimizacion especifica para HDD
|-- 05_optimizar_inicio.py # Gestion de programas de inicio
|-- OPTIMIZAR_TODO.py # Script maestro (ejecuta todos)
|-- INFO_SISTEMA.py # Analisis del sistema
`-- *.bat # Launchers con permisos admin
- Deshabilitar Servicios: Libera RAM deshabilitando servicios innecesarios
- Optimizar Efectos Visuales: Deshabilita animaciones y transparencias
- Limpieza Profunda: Elimina archivos temporales y cache
- Optimizacion HDD: Deshabilita indexacion y superfetch
- Gestion de Inicio: Optimiza programas que se ejecutan al arrancar
- Punto de Restauracion: Crea backup antes de optimizar
- Inicio 30-50% mas rapido
- 200-400 MB de RAM liberada
- Reduccion de uso de disco del 80% al 10-30%
- 2-6 GB de espacio liberado
# Analizar sistema
cd tools/optimizacion_windows
INFO_SISTEMA.bat
# Crear punto de restauracion
00_CREAR_PUNTO_RESTAURACION_ADMIN.bat
# Ejecutar todo
OPTIMIZAR_TODO_ADMIN.batProposito: Mapeo inteligente de PCs fisicos en laboratorios usando direcciones MAC.
Funcionalidades Tecnicas:
# Mapeo fisico predefinido (0-15)
MAPEO_FISICO_MAC = {
'00-D8-61-CB-82-61': 0, # PC-00 (192.168.50.122)
'00-D8-61-CB-82-2E': 1, # PC-01 (192.168.50.236)
# ... mas mapeos
}
# Funciones principales
- scan_network_with_wakemeonlan() # Escaneo de red
- filter_veyon_clients_with_physical_mapping() # Filtrado y mapeo
- clear_existing_computers() # Limpieza de Veyon
- update_veyon_with_physical_mapping() # ActualizacionVentajas:
- Consistencia: Los numeros de PC siempre coinciden con la posicion fisica
- Mantenimiento: No requiere reconfiguracion manual al cambiar IPs
- Escalabilidad: Facil agregar nuevos PCs al mapeo
- Robustez: Manejo de errores y verificacion de eliminacion
Proposito: Script unificado para gestion completa de Veyon con WakeMeOnLAN.
Caracteristicas:
- Integracion WakeMeOnLAN: Escaneo profesional de red
- Nombres Reales de PC: Obtiene nombres reales de los equipos
- Manejo de Duplicados: Asigna sufijos automaticamente
- Actualizacion Segura: No borra configuracion de autenticacion
- Deteccion de Veyon: Identifica que PCs tienen Veyon instalado
Flujo de Trabajo:
- Escanea la red con WakeMeOnLAN
- Procesa nombres y maneja duplicados
- Detecta clientes Veyon
- Actualiza configuracion de Veyon
- Exporta configuracion a archivo
Proposito: GUI intuitiva para mapeo fisico con drag & drop.
Funcionalidades Tecnicas:
# Interfaz con tkinter
class PhysicalMappingGUI:
def scan_network() # Escaneo con WakeMeOnLAN
def add_to_physical_order() # Drag & drop
def update_veyon() # Actualizacion de Veyon
def save_mapping() # Exportar configuracion
def load_mapping() # Importar configuracion-
Funcionalidad Unica:
- Mapeo fisico automatico no disponible en Veyon nativo
- Gestion inteligente de laboratorios de computacion
- Compatibilidad con IPs dinamicas
-
Integracion Perfecta:
- Usa APIs nativas de Veyon (
veyon-cli) - No modifica archivos de configuracion directamente
- Mantiene compatibilidad con versiones futuras
- Usa APIs nativas de Veyon (
-
Valor Educativo:
- Ideal para laboratorios escolares y universitarios
- Facilita la gestion de aulas de computacion
- Reduce tiempo de configuracion manual
-
Escalabilidad:
- Facil adaptacion a diferentes tamanos de laboratorio
- Configuracion flexible de mapeos fisicos
- Soporte para multiples ubicaciones
- Gestion automatica de aulas de computacion
- Mapeo fisico consistente independiente de IPs
- Facilita identificacion de equipos por estudiantes
- Laboratorios con equipos antiguos (4GB RAM + HDD)
- Centros educativos con presupuesto limitado
- Maximizar rendimiento sin actualizar hardware
- Windows 10/11
- Python 3.7+
- Permisos de administrador
- Veyon 4.x+
- WakeMeOnLAN (incluido)
- WinRM habilitado en los clientes para despliegue masivo
- Credencial comun o usuarios locales conocidos para acceso remoto
# Clonar repositorio
git clone https://github.com/JackStar6677-1/VeyonScripts.git
cd VeyonScripts
# Instalar dependencias (opcional)
pip install -r requirements.txt
# Usar VeyonScripts
python MAPEO_FISICO_ADMIN.py
# Usar Optimizacion Windows
cd tools/optimizacion_windows
python OPTIMIZAR_TODO.py- WinRM sirve para automatizacion administrativa, no para manipular directamente ventanas visibles.
- Las GUIs visibles requieren un agente corriendo dentro de la sesion del usuario conectado.
- La elevacion remota debe hacerse por tarea programada o servicio controlado, no intentando escribir la contrasena en UAC.
- Los reportes de ejecucion deben guardarse en
reports/runs/para mantener trazabilidad de cambios masivos. - Antes de cambios agresivos en toda la sala, conviene probar en 1 o 2 equipos representativos.
- El reset de Chrome elimina sesiones, historial, extensiones, cache y perfiles locales del navegador en ese equipo.
- La proteccion de materiales debe aplicarse solo a carpetas institucionales, no al espacio normal de trabajo del usuario.
Cada proyecto incluye su propia documentacion detallada:
- VeyonScripts: Documentacion completa en este README
- Optimizacion Windows: Ver
tools/optimizacion_windows/README.md
- Tiempo de Configuracion: Reduccion del 90% vs configuracion manual
- Precision de Mapeo: 100% de precision en mapeo fisico
- Mantenimiento: Cero intervencion manual al cambiar IPs
- Escalabilidad: Soporte para 1-100+ PCs por laboratorio
- Inicio: 30-50% mas rapido
- RAM liberada: 200-400 MB
- Uso de disco: Reduccion del 80% al 10-30% en reposo
- Espacio liberado: 2-6 GB
Este repositorio esta en GitHub principalmente como base personal de trabajo, documentacion y mejora continua. Si ademas le sirve a otra persona para administrar laboratorios, aprender o adaptar ideas a su entorno, mejor todavia.
Las areas de mejora incluyen:
VeyonScripts:
- Interfaz grafica mas intuitiva
- Soporte para mas tipos de dispositivos
- Integracion con sistemas de gestion de red
Optimizacion Windows:
- Mas scripts de optimizacion
- Deteccion automatica de tipo de disco
- Scripts de reversion automatica
Ambos proyectos estan bajo la licencia MIT. Ver LICENSE para mas detalles.
WakeMeOnLAN.exeno fue desarrollado en este repositorio.- Todos los derechos, creditos y propiedad intelectual de
WakeMeOnLAN.execorresponden a sus creadores y mantenedores originales. - Sitio oficial consultado:
https://www.wakemeonlan.org/es/ - Este repositorio lo usa como herramienta externa de apoyo para escaneo y Wake-on-LAN dentro de flujos de administracion de laboratorio.
- Si se requiere distribucion, licencia o validacion adicional del ejecutable, debe revisarse directamente con su fuente oficial.
Pablo Elias Avendano Miranda
Ingeniero en Informatica
Estos proyectos fueron desarrollados con dedicacion y atencion al detalle para resolver problemas reales en entornos educativos y profesionales. La experiencia practica ha sido fundamental para crear soluciones robustas y confiables.
- Automatizacion de Sistemas
- Optimizacion de Sistemas Operativos
- Gestion de Redes y Laboratorios
- Desarrollo de Software Educativo
"La tecnologia debe ser accesible para todos. No se trata de tener el mejor hardware, sino de aprovechar al maximo lo que tienes."
© 2025 Pablo Elias Avendano Miranda - Todos los derechos reservados
- GitHub: https://github.com/JackStar6677-1/VeyonScripts
- Documentacion VeyonScripts: Este README
- Documentacion Optimizacion Windows:
tools/optimizacion_windows/README.md - Informacion del Autor:
AUTHOR.md