Vollständiges Skript-Handbuch: Linux ScreenConnect Setup automatisieren & URL-Erstellung

Die wichtigsten Erkenntnisse

  • Automatisierung steigert die Effizienz: Das Skript automatisiert den Abruf und die Organisation von ScreenConnect-Sitzungs-URLs und verbessert so die Effizienz des Remote-Support-Managements erheblich.
  • Anpassbar für verschiedene Umgebungen: Die Flexibilität bei der Einstellung von Parametern wie Instanz-ID und Domäne sorgt für unterschiedliche ScreenConnect-Konfigurationen.
  • Reduziert manuellen Aufwand und Fehler: Durch die Automatisierung der URL-Generierung wird die manuelle Eingabe minimiert, was die Fehlerwahrscheinlichkeit verringert und Zeit spart.
  • Bewusstsein für mehrere Instanzen: Das Skript identifiziert und warnt vor möglichen URL-Konflikten in Umgebungen mit mehreren ScreenConnect-Instanzen.
  • Sicherheit ist oberstes Gebot: Das Skript ist zwar effizient, aber es ist wichtig, dass in der Umgebung, in der es verwendet wird, bewährte Sicherheitsverfahren eingehalten werden.
  • NinjaOne-Integrationspotenzial: Die Integration solcher Skripte in Plattformen wie NinjaOne kann die Fernverwaltungsprozesse erheblich rationalisieren.

Die Automatisierung der IT-Verwaltung ist ein entscheidender Faktor für die Rationalisierung von Prozessen und die Steigerung der Effizienz. Ein gutes Beispiel sind Skripte, die komplexe Aufgaben vereinfachen. In diesem Zusammenhang befassen wir uns mit einem Skript, das für die ConnectWise ScreenConnect-Anwendung auf Linux-Systemen entwickelt wurde. Seine Rolle bei der effizienten Verwaltung von Remote-Support-Sitzungen macht es zu einer wertvollen Bereicherung für IT-Experten und Managed Service Provider (MSPs). 

Hintergrund

ConnectWise ScreenConnect ist ein beliebtes Tool für den Fernsupport, das von IT-Teams und MSPs aufgrund seiner Zuverlässigkeit und Benutzerfreundlichkeit häufig eingesetzt wird. Dieses Skript richtet sich insbesondere an die Notwendigkeit, ScreenConnect Start-URLs automatisch abzurufen und in einem benutzerdefinierten Feld zu speichern. Sie ist für Umgebungen konzipiert, in denen ein schneller, organisierter Zugriff auf mehrere Remote-Sitzungen wichtig ist.

Das Skript:

#!/usr/bin/env bash
#
# Description: Retrieves the ConnectWise ScreenConnect launch URL and saves it to a custom field (defaults to screenconnectURL). Requires the domain used for ScreenConnect and a Session Group the machine is a part of to successfully build the URL.
# By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use.
# Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. 
# Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. 
# Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. 
# Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. 
# Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. 
# Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. 
# EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
#
# Preset Parameter: --instanceId "ReplaceMeWithYourInstanceId"
#   The Instance ID for your instance of ScreenConnect. Used to differentiate between multiple installed ScreenConnect instances.
#   To get the instance ID, you can see it in the program name, e.g., connectwisecontrol-yourinstanceidhere.
#   It's also available in the ScreenConnect Admin Center (Administration > Advanced > Server Information).
#
# Preset Parameter: --screenconnectDomain "replace.me"
#   The domain used for your ScreenConnect instance.
#
# Preset Parameter: --sessionGroup "ReplaceMe"
#   A session group that contains all your machines (defaults to All Machines).
#
# Preset Parameter: --customField "ReplaceMeWithAnyMultilineCustomField"
#   The custom field you would like to store this information in.
#
# Preset Parameter: --help
#   Displays some help text.


# These are all our preset parameter defaults. You can set these = to something if you would prefer the script defaults to a certain parameter value.
_arg_instanceId=
_arg_screenconnectdomain=
_arg_sessiongroup="All Machines"
_arg_customfield="screenconnectURL"
_fieldValue=

# Help text function for when invalid input is encountered
print_help() {
    printf '\n\n%s\n\n' 'Usage: [--instanceId|-i <arg>] [--screenconnectDomain|-d <arg>] [--sessionGroup|-g <arg>] [--customField|-c <arg>] [--help|-h]'
    printf '%s\n' 'Preset Parameter: --instanceid "ReplaceWithYourInstanceID"'
    printf '\t%s\n' "Replace the text encased in quotes with your instance id. You can see the instance id in the ScreenConnect Admin Center (Administration > Advanced > Server Information). It's also usually present in the application name on already installed instance. e.g., connectwisecontrol-yourinstanceid."
    printf '\n%s\n' 'Preset Parameter: --screenconnectDomain "replace.me"'
    printf '\t%s' "Replace the text encased in quotes with the domain used for ConnectWise ScreenConnect. e.g. 'example.screenconnect.com'"
    printf '\n%s\n' 'Preset Parameter: --sessionGroup "Replace Me"'
    printf '\t%s' "Replace the text encased in quotes with the name of a Session Group that contains all of your machines e.g., 'All Machines'"
    printf '\n%s\n' 'Preset Parameter: --customField "replaceMe"'
    printf '\t%s' "Replace the text encased in quotes with the name of a custom field you'd like to store this information to (defaults to screenconnectUrl). E.g. 'screenconnectUrl'"
    printf '\n%s\n' 'Preset Parameter: --help'
    printf '\t%s\n' "Displays this help menu."
}

# Determines whether or not help text is necessary and routes the output to stderr
die() {
    local _ret="${2:-1}"
    echo "$1" >&2
    test "${_PRINT_HELP:-no}" = yes && print_help >&2
    exit "${_ret}"
}

# Grabbing the parameters and parsing through them.
parse_commandline() {
    while test $# -gt 0; do
        _key="$1"
        case "$_key" in
        --screenconnectdomain | --screenconnectDomain | --domain | -d)
            test $# -lt 2 && die "Missing value for the optional argument '$_key'." 1
            _arg_screenconnectdomain=$2
            shift
            ;;
        --screenconnectdomain=*)
            _arg_screenconnectdomain="${_key##--screenconnectdomain=}"
            ;;
        --instanceId | --instanceid | -i)
            test $# -lt 2 && die "Missing value for the optional argument '$_key'." 1
            _arg_instanceId=$2
            shift
            ;;
        --instanceid=*)
            _arg_instanceId="${_key##--instanceid=}"
            ;;
        --sessionGroup | --sessiongroup | -g)
            test $# -lt 2 && die "Missing value for the optional argument '$_key'." 1
            _arg_sessiongroup=$2
            shift
            ;;
        --sessiongroup=*)
            _arg_sessiongroup="${_key##--sessiongroup=}"
            ;;
        --customField | --customfield | -c)
            test $# -lt 2 && die "Missing value for the optional argument '$_key'." 1
            _arg_customfield=$2
            shift
            ;;
        --customfield=*)
            _arg_customfield="${_key##--customfield=}"
            ;;
        --help | -h)
            _PRINT_HELP=yes die 0
            ;;
        *)
            _PRINT_HELP=yes die "FATAL ERROR: Got an unexpected argument '$1'" 1
            ;;
        esac
        shift
    done
}

# Function to set a custom field
setCustomField() {
    echo "$_fieldValue" | /opt/NinjaRMMAgent/programdata/ninjarmm-cli set --stdin "$_arg_customfield"
}

export PATH=$PATH:/usr/sbin:/usr/bin

parse_commandline "$@"

# If script form is used, override command-line arguments
if [[ -n $screenconnectDomain ]]; then
    _arg_screenconnectdomain="$screenconnectDomain"
fi

if [[ -n $sessionGroup ]]; then
    _arg_sessiongroup="$sessionGroup"
fi

if [[ -n $instanceId ]]; then
    _arg_instanceId="$instanceId"
fi

if [[ -n $customFieldName ]]; then
    _arg_customfield="$customFieldName"
fi

# If we weren't given an instance id we should warn that this is not advised.
if [[ -z $_arg_instanceId ]]; then
    echo "WARNING: Without the instance id we will be unable to tell which ScreenConnect instance is yours (if multiple are installed). This could result in the wrong URL being displayed."
    echo "To get the instance id you can find it in ScreenConnect itself (Admin > Advanced > Server Information > Instance Identifier Fingerprint). It's also in the application name on every installed copy 'connectwisecontrol-yourinstanceidhere'"
fi

# --screenconnectDomain and --sessionGroup are required. We should also escape the session group given.
if [[ -z $_arg_screenconnectdomain || -z $_arg_sessiongroup ]]; then
    _PRINT_HELP=yes die "FATAL ERROR: Unable to build the URL without the Domain and Session Group!" 1
else
    _arg_sessiongroup=$(python3 -c "import urllib.parse;print(urllib.parse.quote('$_arg_sessiongroup'))")
fi

# Double check ScreenConnect is installed
installedPkg=$(ls /opt | grep "connectwisecontrol-$_arg_instanceId")
if [[ -z $installedPkg ]]; then
    _PRINT_HELP=no die "FATAL ERROR: It appears ConnectWise ScreenConnect is not installed!" 1
fi

# Lets start building some urls
for pkg in $installedPkg; do
    file="/opt/$pkg/ClientLaunchParameters.txt"
    id=$(grep -Eo 's=.{8}-.{4}-.{4}-.{4}-.{12}' "$file" | sed 's/s=//g' | sed 's/&e=Access//g')
    instanceid=${pkg//"connectwisecontrol-"/}
    # We shouldn't have multiple results but if we do we should warn the technician
    if [[ -n "$launchurls" ]]; then
        echo "WARNING: Multiple installed instances detected and no instance id was given. One of these urls will be incorrect."
        launchurls=$(
            printf '%s\n' "$launchurls"
            printf '%s\t' "$instanceid"
            printf '%s\n' "https://$_arg_screenconnectdomain/Host#Access/$_arg_sessiongroup//$id/Join"
        )
    else
        launchurls=$(
            printf '%s\t\t' "InstanceID"
            printf '%s\n' "LaunchURL"
            printf '%s\t' "$instanceid"
            printf '%s\t' "https://$_arg_screenconnectdomain/Host#Access/$_arg_sessiongroup//$id/Join"
        )
    fi
done

# Check that we were successful
if [[ -n $launchurls ]]; then
    echo "Launch URL(s) Created"
else
    _PRINT_HELP=no die "FATAL ERROR: Failed to create Launch URL(s)!" 1
fi

# Change how we output the results based on how many urls we received.
if [[ $(echo "$launchurls" | wc -l) -gt 2 ]]; then
    _fieldValue="$launchurls"
    echo "$_fieldValue"
else
    _fieldValue=$(echo "$launchurls" | tail -n 1 | awk '{print $2}')
    echo "$_fieldValue"
fi

echo "Setting Custom Field..."
setCustomField
exit 0

 

Zugriff auf über 300 Skripte im NinjaOne Dojo

Zugang erhalten

Detaillierte Aufschlüsselung

Das Skript beginnt mit der Definition von Standardwerten für verschiedene Parameter wie Instanz-ID, Domäne, Sitzungsgruppe und benutzerdefiniertes Feld. Diese Parameter sind entscheidend, da sie vorgeben, wie das Skript mit der ScreenConnect-Umgebung interagieren soll. Die Funktion parse_commandline interpretiert Befehlszeilenargumente, mit denen die Benutzer ihre ScreenConnect-Details angeben können.

Insbesondere prüft das Skript, ob das ScreenConnect-Paket im System vorhanden ist. Ist dies nicht der Fall, wird die Ausführung angehalten, um die Zuverlässigkeit zu gewährleisten. Anschließend wird die URL, die zum Starten einer ScreenConnect-Sitzung erforderlich ist, anhand der angegebenen Parameter erstellt. Dieser Schritt ist entscheidend, da er die Benutzereingaben in umsetzbare URLs übersetzt.

In Fällen mit mehreren ScreenConnect-Instanzen warnt das Skript auf intelligente Weise vor möglichen URL-Konflikten. Diese Funktion verbessert das Bewusstsein der Benutzer und reduziert Fehler in Umgebungen mit mehreren Instanzen.

Abschließend zeigt das Skript die konstruierten URLs entweder an oder speichert sie in dem angegebenen benutzerdefinierten Feld, um den Zugriff für die zukünftige Verwendung zu erleichtern.

Mögliche Anwendungsfälle

Stellen Sie sich einen MSP vor, der für die Verwaltung der IT-Infrastruktur an mehreren Kundenstandorten zuständig ist. Sie verwenden ScreenConnect für den Fernsupport, haben aber Probleme mit der Verwaltung mehrerer Sitzungs-URLs. Durch die Implementierung dieses Skripts können sie diese URLs schnell generieren und speichern, was schnellere Reaktionszeiten und einen besser organisierten Fernsupport ermöglicht.

Vergleiche

Herkömmliche Methoden zur Verwaltung von ScreenConnect-Sitzungen beinhalten oft das manuelle Abrufen und Organisieren von URLs, was zeitaufwändig und fehleranfällig ist. Dieses Skript automatisiert den Prozess und sorgt für mehr Effizienz und Genauigkeit. Im Gegensatz zu manuellen Methoden bietet es einen systematischen Ansatz, der die Fehlerwahrscheinlichkeit verringert und wertvolle Zeit spart.

FAQs

  • Kann das Skript für verschiedene Umgebungen angepasst werden?
    • Ja, es erlaubt benutzerdefinierte Parameter wie z. B. ID, Domäne usw., wodurch es sich an verschiedene Konfigurationen anpassen lässt.
  • Kann es mehrere ScreenConnect Instanzen verwalten?
    • Das Skript warnt vor potenziellen URL-Konflikten bei der Einrichtung von mehreren Instanzen und ermöglicht eine manuelle Überprüfung.
  • Ist es sicher, dieses Skript zu verwenden?
    • Das Skript selbst gefährdet nicht die Sicherheit, sondern stellt sicher, dass die Umgebung, in der es ausgeführt wird, sicher ist.

Auswirkungen

Das Skript vereinfacht zwar die URL-Verwaltung, aber die Benutzer sollten sich der Auswirkungen auf die Sicherheit bewusst sein. Die sichere Speicherung von URLs und der sichere Zugriff darauf sind von entscheidender Bedeutung, um den unbefugten Zugriff auf Remote-Sitzungen zu verhindern.

Empfehlungen

  • Überprüfen Sie immer die Parameter vor der Ausführung.
  • Aktualisieren Sie das Skript und ScreenConnect regelmäßig auf die jeweils neueste Version.
  • Implementieren Sie bewährte Sicherheitspraktiken in Ihrer Umgebung, um URLs von Remote-Sitzungen zu schützen.

Abschließende Überlegungen

Die Einbindung solcher Skripte in die NinjaOne-Plattform kann deren Effizienz erheblich steigern. Durch die Automatisierung von Aufgaben wie dem URL-Abruf für Remote-Sitzungen können sich NinjaOne-Anwender stärker auf strategische IT-Management-Aktivitäten konzentrieren , was die Plattform zu einem noch leistungsfähigeren Werkzeug im Arsenal von IT-Experten und MSPs macht.

Nächste Schritte

Der Aufbau eines effizienten und effektiven IT-Teams erfordert eine zentralisierte Lösung, die als einheitliches Tool zur Bereitstellung von IT-Dienstleistungen fungiert. NinjaOne ermöglicht es IT-Teams, alle Geräte zu überwachen, zu verwalten, zu sichern und zu unterstützen, unabhängig vom Standort, ohne dass eine komplexe Infrastruktur vor Ort erforderlich ist.

Erfahren Sie mehr über NinjaOne Remote Script Deployment, sehen Sie sich eine Live-Tour an oder starten Sie Ihre kostenlose Testversion unserer NinjaOne Plattform.

Kategorien:

Das könnte Sie auch interessieren

×

Sehen Sie NinjaOne in Aktion!

Mit dem Absenden dieses Formulars akzeptiere ich die Datenschutzerklärung von NinjaOne.

NinjaOne Allgemeine Geschäftsbedingungen für Skripte

Indem Sie unten auf die Schaltfläche “Ich akzeptiere” klicken, erklären Sie Ihr Einverständnis mit den folgenden rechtlichen Bedingungen sowie mit unseren Nutzungsbedingungen:

  • Eigentumsrechte: NinjaOne besitzt und wird weiterhin alle Rechte, Titel und Interessen an dem Skript (einschließlich des Urheberrechts) behalten. NinjaOne gewährt Ihnen eine eingeschränkte Lizenz zur Nutzung des Skripts in Übereinstimmung mit diesen rechtlichen Bedingungen.
  • Einschränkung der Nutzung: Sie dürfen das Skript nur für Ihre legitimen persönlichen oder internen Geschäftszwecke verwenden und es nicht an Dritte weitergeben.
  • Verbot der Wiederveröffentlichung: Sie sind unter keinen Umständen berechtigt, das Skript in einer Skriptbibliothek, die einem anderen Softwareanbieter gehört oder von diesem kontrolliert wird, erneut zu veröffentlichen.
  • Gewährleistungsausschluss: Das Skript wird “wie gesehen” und “wie verfügbar” bereitgestellt, ohne jegliche Garantie. NinjaOne gibt keine Versprechen oder Garantien, dass das Skript frei von Fehlern ist oder dass es Ihre speziellen Bedürfnisse oder Erwartungen erfüllt.
  • Risikoübernahme: Die Verwendung des Skripts erfolgt auf eigene Gefahr. Sie erkennen an, dass die Nutzung des Skripts mit bestimmten Risiken verbunden ist, und Sie verstehen und übernehmen jedes dieser Risiken.
  • Verzicht und Freigabe: Sie machen NinjaOne nicht für nachteilige oder unbeabsichtigte Folgen verantwortlich, die sich aus Ihrer Nutzung des Skripts ergeben, und Sie verzichten auf alle gesetzlichen oder billigkeitsrechtlichen Rechte oder Rechtsmittel, die Sie gegen NinjaOne im Zusammenhang mit Ihrer Nutzung des Skripts haben könnten.
  • EULA: Wenn Sie ein NinjaOne-Kunde sind, unterliegt Ihre Nutzung des Skripts dem für Sie geltenden Endbenutzer-Lizenzvertrag (EULA).