Seite 1 von 1

[GELÖST] Skriptvorschlag für RustDesk

Veröffentlicht: 8. August 2024 - 11:11 Uhr
von jlatieule
Guten Morgen,


Als Ersatz für TeamViewer nutzen wir einen RustDesk-Server, der nur von unseren Arbeitsstationen aus zugänglich ist. Es handelt sich um ein privates Relay.
Für die Installation eines privaten Relays steht Ihnen ein hervorragendes Installations- und Aktualisierungsskript zur Verfügung auf https://github.com/techahold/rustdeskinstall
Ich muss alle Clients auf die neue Version aktualisieren.
Zu diesem Zweck habe ich folgendes Paket erstellt (siehe Code am Ende der Nachricht)... Die Installation erfolgt im EXE-Format: rustdesk-1.2.7-x86_64.exe

Nach der Installation ändere ich zwei Optionen, bevor ich den Dienst neu starte.
Dieser Abschnitt ist völlig unoptimiert, und ich habe kommentiert, was fehlt.
Da RustDesk dies jedoch gut handhabt (mehrere Testszenarien), werde ich es vorerst dabei belassen.

Die Dateien update_package, uninstall und audit fehlen.

Denis oder Simon, könntet ihr das übernehmen und im Shop anbieten, damit es von anderen wiederverwendet werden kann?
Ich gehe davon aus, dass Sie mit der übersichtlicheren Ausgestaltung des Abschnitts "Optionen" und der Verwaltung des update_package (die abzufragende URL habe ich angegeben) besser zurechtkommen als ich.

Vielen Dank im Voraus

Code: Alle auswählen

# -*- 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")



Betreff: Skriptvorschlag für RustDesk

Veröffentlicht: 14. August 2024 - 09:34 Uhr
von rmaurisso
Hallo,
vielen Dank @jlatieule für dieses Skript.
Kann man bei der Verwendung externer Tools in wapt die "rustdesk_id" als Argument angeben? Das würde die Verbindung zum ausgewählten Computer vereinfachen (ähnlich wie bei TightVNC).
Vielen Dank.

Betreff: Skriptvorschlag für RustDesk

Veröffentlicht: 14. August 2024 – 20:50 Uhr
von jlatieule
Ich weiß momentan nicht, wie ich die in den Installationsprotokollen angezeigte ID für wapt abrufen kann.

Standardmäßig ist die Anmeldung per IP-Adresse aktiviert. Mit externen wapt-Tools funktioniert sie einwandfrei.

PS: Hinweis zur DSGVO: Ohne Zustimmung des Nutzers ist keine Verbindung möglich. Das in den Protokollen gespeicherte permanente Passwort dient ausschließlich der Systemwartung, wenn kein Nutzer angemeldet ist.

Betreff: Skriptvorschlag für RustDesk

Veröffentlicht: 22. August 2024 – 18:05 Uhr
von Sfonteneau
Hallo @jlatieule,

vielen Dank für Ihren Vorschlag.

Ich habe mit der Arbeit an RustDesk begonnen.

Es gibt drei Pakete:

tis-rustdesk-server (zur Installation des RustDesk-Servers unter Linux oder Windows)

, tis-rustdesk (zur Installation des RustDesk-Agenten unter Linux, Windows oder Mac ohne Konfiguration)

und tis-rustdesk-config-template (konfiguriert den RustDesk-Agenten; hierfür ist die Ausführung eines Update-Pakets erforderlich).

Das zufällig generierte Passwort wird verschlüsselt übertragen.

Wir werden prüfen, ob eine kleine native Integration in das Kontextmenü (Rechtsklickmenü) hinzugefügt werden kann, um die Nutzung zu vereinfachen. ;)

Betreff: Skriptvorschlag für RustDesk

Veröffentlicht: 22. August 2024 – 18:44 Uhr
von jlatieule
Ausgezeichnet, Simon! Ich bin sehr gespannt auf die Serverseite. Wir mussten einiges recherchieren, um die Installation unter Debian zu optimieren.

Nach meinem Urlaub kann ich dir meine Serverinstallationsanleitung schicken; vielleicht findest du ja ein paar nützliche Tipps für die Einrichtung. Sag mir einfach, welche Kommunikationsmethode du bevorzugst.

PS: Als IT-Spezialist an der Victor-Hugo-Mittelschule in Narbonne habe ich unter dem Pseudonym „percherie“ im Forum mitgewirkt. Ich nehme an, du erinnerst dich an mich, und wie damals bin ich fest davon überzeugt, dass Teilen die Community voranbringt.

Betreff: Skriptvorschlag für RustDesk

Veröffentlicht: 23. August 2024 - 09:57 Uhr
von Sfonteneau
jlatieule schrieb: 22. August 2024 - 18:44 Uhr PS: Als ich IT-Spezialist an der Victor-Hugo-Mittelschule in Narbonne war, habe ich unter dem Pseudonym percherie im Forum mitgewirkt. Ich nehme an, Sie erinnern sich an mich, und wie damals bin ich fest davon überzeugt, dass wir durch Austausch gemeinsam vorankommen.
Natürlich erinnere ich mich. ;)Falls Sie jemals in Nantes sind, besuchen Sie uns doch, ich würde mich sehr freuen (ich bin nicht oft in Narbonne). :D )
jlatieule schrieb: 22. August 2024 - 18:44 Uhr Ich bin sehr gespannt auf die Serverseite. Wir mussten einige Recherchen durchführen, um die Installation unter Debian zu optimieren.
Nichts Besonderes, ich habe einfach das Python-Skript aus ihrer Dokumentation und hier nachgebildet: https://github.com/techahold/rustdeskin ... install.sh

Und für den Windows-Server habe ich einfach nssm ersetzt durch Engel

Und was den Rustdesk-MacOS-Client angeht, so ist er in meinen Tests nicht so gut, wir müssen wohl darauf zurückkommen.

Betreff: Skriptvorschlag für RustDesk

Veröffentlicht: 5. September 2024 – 16:10 Uhr
von rmaurisso
Hallo,
vielen Dank euch beiden.
Es funktioniert einwandfrei für externe Tools mit der IP-Adresse und für die Vorlage. ;)

Betreff: Skriptvorschlag für RustDesk

Veröffentlicht: 9. September 2024 – 15:46 Uhr
von dcardon
Hallo Régis,

vielen Dank für das Feedback. :-) Ich markiere das Thema als gelöst.

Viele Grüße,

Denis