Guida allo script: Automatizzazione della creazione di URL ConnectWise per macOS

Punti chiave

  • Lo script per la creazione di URL ConnectWise automatizza il recupero e la memorizzazione degli URL di lancio di ConnectWise Control su macOS, semplificando notevolmente il supporto remoto.
  • Lo script per la creazione di URL ConnectWise offre opzioni di personalizzazione per ID di istanza, domini, gruppi di sessione e campi personalizzati, adattandosi a specifici ambienti IT.
  • L’inclusione di una funzione di aiuto e di gestione degli errori migliora l’esperienza guidata dell’utente e la risoluzione dei problemi.
  • L’approccio dello script per la creazione di URL ConnectWise è più efficiente e organizzato rispetto alla gestione manuale degli URL o alle soluzioni di scripting di base.
  • La sicurezza e l’accesso controllato agli URL generati sono essenziali per mantenere la sicurezza informatica.
  • Si consiglia di testare lo script per la creazione di URL ConnectWise in un ambiente macOS specifico prima della distribuzione completa.
  • L’integrazione di questo script per la creazione di URL ConnectWise in un set di strumenti più ampio come NinjaOne può ottimizzare ulteriormente il supporto remoto e le attività di gestione IT.

Background

Nell’attuale panorama IT interconnesso, l’efficienza e l’affidabilità dell’assistenza remota non sono solo questioni di accessorie ma vere e proprie necessità. Lo scripting avanzato, in particolare nel contesto della gestione del software di assistenza remota, svolge un ruolo fondamentale nel raggiungimento di questi obiettivi. Lo script per la creazione di URL ConnectWise ne è un esempio e fornisce un approccio semplificato alla gestione delle sessioni di ConnectWise Control (ex ScreenConnect) su macOS.

Questo script Bash per la creazione di URL ConnectWise è stato progettato per i professionisti IT e i fornitori di servizi gestiti (MSP) che utilizzano ConnectWise Control per il supporto remoto. La sua funzione principale è quella di recuperare e salvare gli URL di avvio di ConnectWise Control, un componente cruciale per l’assistenza desktop remota. Questo processo prevede l’utilizzo di ID istanza specifici, informazioni sul dominio e gruppi di sessione per creare URL accurati e accessibili. La sua importanza risiede nell’automazione di un’attività tipicamente manuale e dispendiosa in termini di tempo, e dunque nella sua capacità di migliorare la produttività e i tempi di risposta dei team di assistenza IT.

Lo script per la creazione di URL ConnectWise:

#!/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 that all machines are 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/it/condizioni-utilizzo
# 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 of 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 any 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 in ConnectWise ScreenConnect that contains All Machines (defaults to All Machines). ex. '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 launchUrl). ex. '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" | /Applications/NinjaRMMAgent/programdata/ninjarmm-cli set --stdin "$_arg_customfield"
}

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

parse_commandline "$@"

# If script form is used override commandline agruments
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 may 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=$(echo "$_arg_sessiongroup" | perl -MURI::Escape -ne 'chomp;print uri_escape($_),"\n"')
fi

# Double check ScreenConnect is installed
installedPkg=$(pkgutil --pkgs | 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="/Applications/$pkg.app/Contents/Resources/ClientLaunchParameters.txt.lproj/locversion.plist"
  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

 

Accedi a oltre 700 script nel Dojo NinjaOne

Ottieni l’accesso

Analisi dettagliata dello script per la creazione di URL ConnectWise

Lo script per la creazione di URL ConnectWise opera in diverse fasi:

  • Inizializzazione dei parametri: Lo script per la creazione di URL ConnectWise inizia impostando i valori predefiniti per vari parametri come l’ID dell’istanza, il dominio, il gruppo di sessione e il nome del campo personalizzato.
  • Funzione di aiuto: È incorporata una funzione di testo di aiuto che guida l’utente nell’uso dello script, soprattutto in caso di input non validi.
  • Parsing della riga di comando: Qui lo script per la creazione di URL ConnectWise analizza gli argomenti della riga di comando per personalizzare impostazioni come il dominio e l’ID dell’istanza.
  • Impostazione del campo personalizzato: Lo script per la creazione di URL ConnectWise include una funzione per impostare un campo personalizzato nello strumento NinjaOne, in cui verrà memorizzato l’URL di ConnectWise Control.
  • Creazione di URL ConnectWise di lancio: La funzionalità principale consiste nel creare gli URL di lancio estraendo gli ID necessari dai pacchetti installati e costruendo l’URL in base ai parametri forniti.
  • Gestione dell’output: A seconda del numero di URL generati, lo script per la creazione di URL ConnectWise li memorizza in un campo personalizzato o li invia direttamente in output.

Casi d’uso potenziali

Immagina un professionista IT che gestisce un certo numero di dispositivi di diverse organizzazioni di clienti. Ha la necessità di fornire un’assistenza remota tempestiva, ma la gestione degli URL delle singole sessioni è complicata. Utilizzando questo script, può generare e memorizzare rapidamente questi URL, garantendo un accesso remoto rapido e organizzato.

Confronti

Tradizionalmente, i professionisti IT possono configurare manualmente ogni URL di sessione o utilizzare script meno sofisticati. Questo script, tuttavia, automatizza l’intero processo di creazione di URL ConnectWise ed è specificamente progettato per ConnectWise Control su macOS, e offre quindi una soluzione più efficiente e priva di errori.

Domande frequenti:

  • Come posso trovare l’ID dell’istanza?
    • Controlla lo ScreenConnect Admin Center o il nome dell’applicazione sulle istanze installate.
  • È compatibile con tutte le versioni di macOS?
    • È stato progettato per una compatibilità generale, ma va sempre testato prima sulla propria versione specifica.
  • Posso personalizzare il campo di archiviazione per gli URL?
    • Sì, lo script per la creazione di URL ConnectWise consente di impostare un campo personalizzato a scelta.

Implicazioni

Sebbene lo script per la creazione di URL ConnectWise semplifichi il processo di gestione delle sessioni remote, è essenziale considerare le implicazioni per la sicurezza. Garantire che gli URL siano archiviati in modo sicuro e che l’accesso sia controllato è fondamentale per la sicurezza informatica.

Raccomandazioni

  • Aggiorna regolarmente lo script per la creazione di URL ConnectWise per soddisfare i nuovi aggiornamenti di ConnectWise Control.
  • Controlla le autorizzazioni di sicurezza per gli URL memorizzati.
  • Testa lo script per la creazione di URL ConnectWise in un ambiente controllato prima della distribuzione su larga scala.

Considerazioni finali

L’integrazione di script come questo per la creazione di URL ConnectWise in un kit di strumenti più ampio come NinjaOne può migliorare notevolmente la capacità di un professionista IT di gestire il supporto remoto in modo efficiente e sicuro. L’approccio completo di NinjaOne al monitoraggio e alla gestione da remoto integra questi script, fornendo una solida piattaforma per la gestione IT.

Passi successivi

La creazione di un team IT efficiente ed efficace richiede una soluzione centralizzata che funga da principale strumento per la fornitura di servizi. NinjaOne consente ai team IT di monitorare, gestire, proteggere e supportare tutti i dispositivi, ovunque essi si trovino, senza la necessità di una complessa infrastruttura locale.

Per saperne di più su NinjaOne Endpoint Management, fai un tour dal vivo, o inizia la tua prova gratuita della piattaforma NinjaOne.

Categorie:

Ti potrebbe interessare anche

Guarda una demo×
×

Guarda NinjaOne in azione!

Inviando questo modulo, accetto La politica sulla privacy di NinjaOne.

Termini e condizioni NinjaOne

Cliccando sul pulsante “Accetto” qui sotto, dichiari di accettare i seguenti termini legali e le nostre condizioni d’uso:

  • Diritti di proprietà: NinjaOne possiede e continuerà a possedere tutti i diritti, i titoli e gli interessi relativi allo script (compreso il copyright). NinjaOne ti concede una licenza limitata per l’utilizzo dello script in conformità con i presenti termini legali.
  • Limitazione d’uso: Puoi utilizzare lo script solo per legittimi scopi personali o aziendali interni e non puoi condividere lo script con altri soggetti.
  • Divieto di ripubblicazione: In nessun caso ti è consentito ripubblicare lo script in una libreria di script appartenente o sotto il controllo di un altro fornitore di software.
  • Esclusione di garanzia: Lo script viene fornito “così com’è” e “come disponibile”, senza garanzie di alcun tipo. NinjaOne non promette né garantisce che lo script sia privo di difetti o che soddisfi le tue esigenze o aspettative specifiche.
  • Assunzione del rischio: L’uso che farai dello script è da intendersi a tuo rischio. Riconosci che l’utilizzo dello script comporta alcuni rischi intrinseci, che comprendi e sei pronto ad assumerti.
  • Rinuncia e liberatoria: Non riterrai NinjaOne responsabile di eventuali conseguenze negative o indesiderate derivanti dall’uso dello script e rinuncerai a qualsiasi diritto legale o di equità e a qualsiasi rivalsa nei confronti di NinjaOne in relazione all’uso dello script.
  • EULA: Se sei un cliente NinjaOne, l’uso dello script è soggetto al Contratto di licenza con l’utente finale (EULA) applicabile.