[RESUELTO] Propuesta de script para RustDesk

Preguntas sobre paquetes WAPT / Solicitudes y ayuda sobre paquetes WAPT.
Reglas del foro
Reglas del foro de la comunidad
* Soporte en inglés en www.reddit.com/r/wapt
* El soporte de la comunidad en francés está disponible en este foro
* Por favor, anteponga [RESUELTO] al título del tema si está resuelto.
* Por favor, no edite un tema que esté etiquetado como [RESUELTO]. Abra un nuevo tema haciendo referencia al anterior.
* Especifique la versión de WAPT instalada, la versión completa y el número de compilación (2.2.1.11957 / 2.2.2.12337 / etc.), así como la edición Enterprise/Discovery.
* Las versiones 1.8.2 y anteriores ya no son compatibles. Las únicas preguntas aceptadas sobre la versión 1.8.2 están relacionadas con la actualización a una versión compatible (2.1, 2.2, etc.).
* Especifique el sistema operativo del servidor (Linux/Windows) y la versión (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Especifique el sistema operativo de la máquina de administración/creación de paquetes y de la máquina con el agente problemático, si corresponde (Windows 7/10/11/Debian 11/etc.).
* Evite hacer varias preguntas al abrir un tema, ya que podría ser ignorado. Si hay varios temas, ábralos por separado, preferiblemente uno tras otro y no todos a la vez (es decir, no sature el foro con spam).
* Incluya fragmentos de código, capturas de pantalla y otras imágenes directamente en la publicación. Los enlaces a Pastebin, Bitly y otros sitios de terceros serán eliminados sistemáticamente.
* Como en cualquier foro comunitario, el soporte es proporcionado voluntariamente por los miembros. Si necesita soporte comercial, puede comunicarse con el departamento de ventas de Tranquil IT al 02.40.97.57.55.
Bloqueado
jlatieule
Mensajes: 59
Inscripción: 3 de julio de 2019 - 9:18 AM

8 de agosto de 2024 - 11:11

Buen día,


Como reemplazo de TeamViewer, utilizamos un servidor RustDesk accesible solo para nuestras estaciones de trabajo. Es un servidor privado.
Para instalar un relé privado, tienes un excelente script de instalación y actualización en https://github.com/techahold/rustdeskinstall
Necesito actualizar todos los clientes a la nueva versión.
Para este propósito, creé el siguiente paquete (ver código al final del mensaje)... la instalación se realiza utilizando el formato EXE: rustdesk-1.2.7-x86_64.exe

Después de la instalación, modifico dos opciones antes de reiniciar el servicio.
Esta sección no está optimizada en absoluto y ya he comentado lo que falta
Sin embargo, dado que RustDesk lo maneja bien (múltiples escenarios de prueba), me detendré allí por ahora

Faltan los archivos update_package, uninstall y audit

Denis o Simon, ¿podrían hacerse cargo de esto y agregarlo a la tienda para que otros puedan reutilizarlo?
Ciertamente supongo que usted se sentirá más cómodo que yo finalizando la sección "opciones" de forma más ordenada y administrando el update_package (he indicado la URL a consultar)

Gracias de antemano

Código: Seleccionar todo

# -*- coding: utf-8 -*-
from setuphelpers import *
import time, string, secrets

r"""
Usable WAPT package functions: install(), uninstall(), session_setup(), audit(), update_package()

"""
# Declaring global variables - Warnings: 1) WAPT context is only available in package functions; 2) Global variables are not persistent between calls

# Création d'un mot de passe aléatoire
alphabet = string.ascii_letters + string.digits
rustdesk_pw = ''.join(secrets.choice(alphabet) for i in range(12))

# Configuration réseau pour RustDesk à importer
# Si vide ou invalide, la configuration réseau restera inchangée
rustdesk_cfg = "METTEZ-VOTRE-CONFIG-ENTRE-LES-GUILLEMETS"

def install():
    # Récupération de l'exécutable
    bin_name = glob.glob("rustdesk-*.exe")[0]

    # Désactivé car pas de détection de fin d'installation
##    install_exe_if_needed(
##        bin_name,
##        silentflags="--silent-install",
##        key="RustDesk",
##        min_version=control.get_software_version(),
##    )
    # Méthode manuelle
    # Si n'est pas installé ou version est inférieure à celle du paquet
    if ( not installed_softwares ('rustdesk') or
    Version(installed_softwares('rustdesk')[0]["version"]) < Version(control['version'].split('-',1)[0]) ):
        print("Installation de %s %s" % ( control['name'], control['version'].split('-',1)[0] ) )
        # Timeout pour sortir sans erreur... ajouter une pause de 10s si on n'utilise plus cette méthode
        run_notfatal( '%s --silent-install' % (bin_name), timeout=15 )
    else:
        print("%s %s est déjà installé" % ( control['name'], control['version'].split('-',1)[0] ) )

    # Récupération du dossier d'installation
    software = installed_softwares ('rustdesk')
    install_location = software[0]["install_location"]

    # Exécution ou installation du service
    if service_installed ("rustdesk"):
        if not service_is_running ("rustdesk"):
            print ('Démarrage du service')
            service_start('rustdesk')
    else:
        print ("Installation du service RustDesk")
        run_notfatal( '"%s\\rustdesk.exe" --install-service -wait -Verbose' % (install_location), timeout = 20 )

    print("Patientez quelques secondes avant que l'installation se poursuive")
    time.sleep(10)

    print("Application de la configuration réseau")
    run_notfatal( '"%s\\rustdesk.exe" --config %s' % (install_location, rustdesk_cfg) )
    print("Définition d'un mot de passe permanent aléatoire")
    run( '"%s\\rustdesk.exe" --password %s' % (install_location, rustdesk_pw) )
    # ID de RustDesk
    rustdesk_id = run_notfatal( '"%s\\rustdesk.exe" --get-id' % (install_location) )

    # Arrêt du service Rustdesk pour modifications des options
    if service_installed("rustdesk"):
        if service_is_running("rustdesk"):
            print("Arrêt du service Rustdesk")
            service_stop("rustdesk")

    # Ajout d'option personnalisé à la configuration
    # inifile_writestring ne peut pas être utiliser suite à mauvaise en-tête dans le fichier
    # En cas de ligne en doublon dans le fichier RustDesk2.toml, les dernières seront prise en compte... mais pas toujours !!!
    # Point d'amélioration :
        # Supprimer les fichier %appdata%\RustDesk\config de tous les profile
        # Chercher et remplacer les chaînes concernée
        # Si absent, créer les chaînes au lieu de le faire systématiquement
    toml = makepath("c:", "Windows", "ServiceProfiles", "LocalService", "AppData", "Roaming", "RustDesk", "config", "RustDesk2.toml")
    f = open( toml, 'a')
    f.write("\n" + "direct-server = 'Y'")
    f.write("\n" + "direct-access-port = '21118'")
    f.close

    # Redémarrage du service Rustdesk
    if service_installed("rustdesk"):
        if service_is_stopped("rustdesk"):
            print("Démarrage du service RustDesk")
            service_start("rustdesk")
    else:
        print ("Installation du service RustDesk")
        run_notfatal( '"%s\\rustdesk.exe" --install-service -wait -Verbose' % (install_location), timeout = 20 )

    # Retour sur la console de l'ID et du mot de passe permanent
    print ( "-------------------" )
    print ( "ID RustDesk : %s" % rustdesk_id )
    print ( "Mot de passe : %s" % rustdesk_pw )
    print ( "-------------------" )



def session_setup():
    # Créer le session_setup



def update_package():
    # Créer l'update package
    # curl latest sur https://www.github.com//rustdesk/rustdesk/releases/latest
    # fichier lastest avec $RDLATEST sur https://github.com/rustdesk/rustdesk/releases/download/$RDLATEST/rustdesk-$RDLATEST-x86_64.exe



def uninstall():
    # Créer l'uninstall



def audit():
    # Créer l'audit
    # Vérifier si service fonctionne
    # Vérifier configuration dans makepath("c:", "Windows", "ServiceProfiles", "LocalService", "AppData", "Roaming", "RustDesk", "config", "RustDesk2.toml")


Administrador de Sistemas y Redes en Domitia Habitat
rmaurisso
Mensajes: 4
Inscripción: 12 de enero de 2021 - 17:12

14 de agosto de 2024 - 09:34

Hola,
gracias @jlatieule por este script.
Al usar herramientas externas en wapt, ¿es posible usar "rustdesk_id" como argumento? Esto simplificaría la conexión al equipo seleccionado (como lo haría TightVNC).
Gracias.
jlatieule
Mensajes: 59
Inscripción: 3 de julio de 2019 - 9:18 AM

14 de agosto de 2024 - 20:50

Por ahora, desconozco cómo recuperar el ID que aparece en los registros de instalación para usarlo con wapt.

Por defecto, he habilitado el inicio de sesión mediante dirección IP. Funciona perfectamente con herramientas externas de wapt.

Nota: Recordatorio del RGPD: no se permite ninguna conexión sin el consentimiento del usuario. La contraseña permanente que aparece en los registros solo se utiliza para el mantenimiento del sistema cuando no hay ningún usuario conectado.
Administrador de Sistemas y Redes en Domitia Habitat
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

22 de agosto de 2024 - 18:05

Hola @jlatieule,

gracias por tu sugerencia.

He empezado a trabajar en RustDesk.

Hay tres paquetes:

tis-rustdesk-server (para instalar el servidor RustDesk en Linux o Windows)

, tis-rustdesk (para instalar el agente RustDesk en Linux, Windows o Mac sin configuración)

y tis-rustdesk-config-template (configura el agente RustDesk; requiere ejecutar un paquete de actualización para proporcionar la configuración).

La contraseña aleatoria se transmite encriptada.

Estamos estudiando la posibilidad de añadir una pequeña integración nativa al menú contextual para simplificar su uso. ;)
jlatieule
Mensajes: 59
Inscripción: 3 de julio de 2019 - 9:18 AM

22 de agosto de 2024 - 18:44

¡Excelente, Simon! Tengo mucha curiosidad por ver cómo funciona el servidor. Tuvimos que investigar un poco para optimizar la instalación en Debian.

Cuando vuelva de vacaciones, te puedo enviar el procedimiento de instalación del servidor; quizás encuentres algunos consejos sobre cómo configurarlo... Avísame qué método de comunicación prefieres.

PD: Cuando era técnico informático en la escuela secundaria Victor Hugo de Narbona, participé en el foro con el seudónimo "percherie". Imagino que te acuerdas de mí, y como entonces, creo firmemente en compartir para ayudar a la comunidad a avanzar.
Administrador de Sistemas y Redes en Domitia Habitat
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

23 de agosto de 2024 - 09:57

jlatieule escribió: 22 de agosto de 2024 - 18:44 PD: Cuando era especialista en TIC en la escuela secundaria Victor Hugo de Narbona, contribuí al foro con el seudónimo percherie. Imagino que me recuerdas, y como entonces, creo sinceramente en compartir para impulsar el progreso colectivo.
Por supuesto que lo recuerdo ;)Si alguna vez estás en Nantes, ven a vernos, me encantaría (no estoy a menudo en Narbona) :D )
jlatieule escribió: 22 de agosto de 2024 - 18:44 Tengo mucha curiosidad por ver el lado del servidor. Tuvimos que hacer algunas investigaciones para optimizar la instalación en Debian.
Nada extraordinario, solo reproduje el script de Python que se encuentra en su documentación y aquí: https://github.com/techahold/rustdeskin ... install.sh

Y para el servidor de Windows, simplemente reemplacé nssm con angelizar

Y en lo que respecta al cliente rustdesk para macOS, no funciona muy bien en mis pruebas, probablemente tendremos que volver a ello.
rmaurisso
Mensajes: 4
Inscripción: 12 de enero de 2021 - 17:12

5 de septiembre de 2024 - 16:10

Hola,
gracias a ambos.
Funciona bien para herramientas externas con la dirección IP y para la plantilla. ;)
Avatar de usuario
dcardón
Experto en WAPT
Mensajes: 1908
Inscripción: 18 de junio de 2014 - 09:58
Ubicación: Saint Sébastien sur Loire
Contacto :

9 de septiembre de 2024 - 15:46

Hola Régis,

gracias por tus comentarios. :-) Marco el tema como resuelto.

Saludos,

Denis
Denis Cardon - Tranquil IT
¡Comparte tus experiencias en WAPT! Envíanos las URL de tus blogs y artículos en la "Tu opinión del foro y los publicaremos en el de WAPT
Bloqueado