Skip to content
GitHubStars: 01 views

RDP-AntiTimeout-Local

Local Python tool that helps keep Remote Desktop (RDP) sessions active, preventing timeouts due to inactivity by simulating activity in the RDP client window on your PC.

Script Anti-Timeout para Sesiones RDP (Local con Alerta Sonora)

Descripción

Este script de Python está diseñado para ejecutarse en tu PC local con Windows y ayudar a prevenir que tus sesiones de Escritorio Remoto (RDP) se desconecten debido a inactividad. Lo hace simulando periódicamente una interacción mínima con la ventana del cliente RDP, avisándote con un sonido antes de cada acción.

Importante: Este script es una solución del lado del cliente. La forma ideal y más robusta de manejar los tiempos de espera de sesión RDP es configurando las directivas correspondientes en el servidor RDP. Considera este script como una alternativa cuando no tienes acceso para modificar la configuración del servidor.

Características

  • Simulación de Actividad: Envía una pulsación de tecla ("Scroll Lock") a la ventana RDP para simular actividad.
  • Alerta Sonora Anticipada: Reproduce un sonido de sistema configurable (o un beep simple) unos segundos antes de interactuar con la ventana RDP, para darte un aviso previo.
  • Intervalo Configurable: Puedes definir cada cuántos minutos se ejecutará el ciclo de actividad.
  • Gestión Inteligente de Ventana RDP:
    • Identifica la ventana RDP basándose en una parte de su título (configurable).
    • Si la ventana RDP estaba minimizada, la restaura temporalmente para la interacción y luego la vuelve a minimizar.
    • Si la ventana RDP ya estaba abierta (no minimizada), la activa para la interacción y la deja abierta.
  • Restauración de Foco (Intento): Intenta devolver el foco a la ventana que estaba activa antes de interactuar con el RDP.
  • Mensajes de Estado: Muestra información en la consola sobre lo que está haciendo.

Requisitos Previos

  • Sistema Operativo: Windows (debido al uso de winsound para el sonido y pygetwindow para la gestión de ventanas específicas de Windows).
  • Python: Python 3.x instalado.
  • Librerías de Python:
    • pyautogui
    • pygetwindow
    • Estas librerías se pueden instalar usando pip (el gestor de paquetes de Python). Abre una terminal o Símbolo del sistema y ejecuta:
      pip install pyautogui pygetwindow
      

Configuración

Antes de ejecutar el script, debes configurarlo editando las siguientes variables directamente en la parte superior del archivo .py:

  1. RDP_WINDOW_TITLE_CONTAINS: (¡MUY IMPORTANTE!)

    • Define una parte del título de la ventana de tu sesión de Escritorio Remoto que permita al script identificarla de manera única.
    • Ejemplo: Si el título de tu ventana RDP es "10.11.11.37 - Conexión a Escritorio Remoto", podrías usar "192.168.0.2" o "Conexión a Escritorio Remoto".
    • Ajusta este valor cuidadosamente para que coincida con tu ventana RDP. Revisa el título exacto de tu ventana RDP cuando está conectada.
  2. INTERVALO_MINUTOS:

    • Número de minutos entre cada ciclo completo de simulación de actividad.
    • Ejemplo: 1 para cada minuto, 5 para cada cinco minutos.
  3. SEGUNDOS_AVISO_PREVIO:

    • Cuántos segundos antes de que el script interactúe con la ventana RDP sonará la alerta.
    • Ejemplo: 5 para que el sonido se reproduzca 5 segundos antes de la acción.
  4. Configuración del Sonido de Alerta (puedes dejar los valores por defecto o personalizarlos):

    • USAR_BEEP_SIMPLE: Pon True para un beep simple y corto. Pon False para usar un sonido de sistema definido en SONIDO_ALIAS.
    • BEEP_FRECUENCIA: Frecuencia en Hertz (Hz) para el beep simple (solo si USAR_BEEP_SIMPLE es True). Ejemplo: 1000.
    • BEEP_DURACION: Duración en milisegundos para el beep simple (solo si USAR_BEEP_SIMPLE es True). Ejemplo: 300.
    • SONIDO_ALIAS: Nombre del alias del sonido de sistema de Windows que se usará (solo si USAR_BEEP_SIMPLE es False).
      • Ejemplos comunes: "SystemAsterisk", "SystemExclamation", "SystemHand", "SystemQuestion", "SystemDefault".

¿Cómo Usar el Script?

  1. Configurar: Abre el archivo clcik_rdp.py con un editor de texto (como el Bloc de Notas, Notepad++, VS Code, etc.) y ajusta las variables de configuración en la sección superior del script, especialmente RDP_WINDOW_TITLE_CONTAINS.
  2. Ejecutar desde la Consola:
    • Abre una ventana de Símbolo del sistema (CMD) o PowerShell en tu PC.
    • Navega hasta el directorio (la carpeta) donde guardaste el archivo: cd ruta\a\tu\directorio (reemplaza con la ruta real).
    • Ejecuta el script usando Python: python click_rdp.py.
  3. Dejar Corriendo: El script se ejecutará en la ventana de la consola, mostrando mensajes sobre su actividad. Debes dejar esta ventana de consola abierta mientras necesites que el script funcione.
  4. Detener el Script: Para detener el script, ve a la ventana de la consola donde se está ejecutando y presiona las teclas Ctrl + C simultáneamente. Podría preguntarte si deseas finalizar el trabajo por lotes (S/N); presiona S y Enter.

Notas Importantes y Advertencias

  • Funcionamiento Local: Este script se ejecuta en tu computadora local, no en el servidor RDP.
  • Título de Ventana Crucial: La correcta identificación de la ventana RDP mediante RDP_WINDOW_TITLE_CONTAINS es fundamental. Si el título de tu ventana RDP cambia o no coincide con lo configurado, el script no podrá encontrarla.
  • Interrupción Visual: Aunque el script está diseñado para ser lo más discreto posible, la ventana RDP podría "parpadear" o aparecer brevemente en pantalla cuando el script la activa para interactuar, especialmente si estaba minimizada. El sonido de alerta te avisará antes de esto.
  • Eficacia: La efectividad para prevenir el timeout de la sesión RDP depende de cómo el cliente RDP y la configuración del servidor manejen la actividad simulada.
  • Solución Ideal: Siempre es preferible configurar correctamente los tiempos de espera de sesión en el lado del servidor RDP si tienes los permisos y la posibilidad de hacerlo. Este script es un paliativo.
  • Uso Responsable: Utiliza este script de manera responsable y ten en cuenta las políticas de tu organización o del administrador del servidor RDP respecto al uso de herramientas de automatización o para eludir tiempos de espera de sesión.

Posibles Problemas y Soluciones Rápidas

  • Mensaje "No se encontró ninguna ventana RDP que coincida":
    • Solución: Revisa muy cuidadosamente la variable RDP_WINDOW_TITLE_CONTAINS en el script. Asegúrate de que el texto que pongas ahí sea una parte EXACTA del título de tu ventana de Escritorio Remoto cuando está conectada. El título puede variar según el idioma de tu Windows o cómo te conectes.
    • Verifica que la sesión RDP esté establecida y la ventana exista (puede estar minimizada) cuando el script intenta buscarla.
  • El sonido de alerta no se reproduce:
    • Verifica que el sonido general de tu sistema Windows esté activado y con un volumen audible.
    • Si estás usando un SONIDO_ALIAS, asegúrate de que sea un alias válido en tu sistema Windows. Puedes probar con "SystemDefault" o cambiar USAR_BEEP_SIMPLE a True para usar el beep básico.
  • El foco de la ventana no siempre se restaura correctamente a la aplicación anterior:
    • La gestión del foco de las ventanas en Windows puede ser compleja. El script hace un intento de restaurar el foco, pero su efectividad puede variar dependiendo de las aplicaciones y el estado del sistema.

Recuerda que este script es una herramienta para ayudarte con un problema específico y su uso es bajo tu responsabilidad.