Esportare i log NinjaOne su macOS con uno script Bash

Una gestione efficiente dei log è fondamentale per i professionisti IT e per i fornitori di servizi gestiti (MSP). Che si tratti di risolvere problemi o di garantire la conformità, avere accesso ai log pertinenti può essere una salvezza. Lo script Bash fornito semplifica il processo per esportare i log NinjaOne su macOS, cosa che lo rende uno strumento prezioso per gli ambienti IT. Questo articolo si propone di analizzare lo script, i suoi casi d’uso e le best practice per la sua distribuzione.

Informazioni sulla gestione dei log Ninja

NinjaOne è una soluzione completa per la gestione dell’IT e i suoi agenti generano log che possono fornire informazioni cruciali su prestazioni, criteri e configurazioni del sistema. Per gli utenti di macOS, individuare ed esportare manualmente questi log può essere noioso. Questo script automatizza il processo, assicurando che i log vengano esportati in una directory specificata in un formato coerente.

I professionisti IT e gli MSP hanno spesso bisogno di questi log per scopi di diagnostica, audit o conformità. Automatizzando l’esportazione dei log, lo script riduce l’impegno manuale e il rischio di errori umani.

Lo script per esportare i log NinjaOne su macOS

#!/usr/bin/env bash

# Description: Exports the Ninja Support Logs to the specified directory for Mac.
#   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: --destination "/private/tmp"
#   The directory to export the logs to.
#
# 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_destination="/private/tmp"

# Help text function for when invalid input is encountered
print_help() {
    printf '\n\n%s\n\n' 'Usage: [--destination|-d <arg>] [--createPath|-c] [--help|-h]'
    printf '%s\n' 'Preset Parameter: --destination "/private/tmp/ninjaLogs" --createPath'
    printf '\t%s\n' "Replace the text encased in quotes with the directory to export the logs to."
    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
        --destination | -d)
            test $# -lt 2 && die "Missing value for the optional argument '$_key'." 1
            _arg_destination=$2
            shift
            ;;
        --destination=*)
            _arg_destination="${_key##--destination=}"
            ;;
        --createPath | -c)
            _arg_createPath="true"
            ;;
        --help | -h)
            _PRINT_HELP=yes die 0
            ;;
        *)
            _PRINT_HELP=yes die "FATAL ERROR: Got an unexpected argument '$1'" 1
            ;;
        esac
        shift
    done
}

parse_commandline "$@"

# If script form is used override commandline arguments
if [[ -n $destination ]] && [[ "${destination}" != "null" ]]; then
    _arg_destination="$destination"
fi
if [[ -n $createPath ]] && [[ "${createPath}" == "true" ]]; then
    _arg_createPath="true"
fi

# Get the path to the NinjaRMMAgent from the environment variable NINJA_DATA_PATH
_data_path=$(printenv | grep -i NINJA_DATA_PATH | awk -F = '{print $2}')
if [[ -z "${_data_path}" ]]; then
    # If the environment variable NINJA_DATA_PATH is not set, try to find the NinjaRMMAgent in the Applications folder
    _data_path="/Applications/NinjaRMMAgent/programdata"
    if [[ -z "${_data_path}" ]]; then
        echo "[Error] No NinjaRMMAgent found. Please make sure you have the NinjaRMMAgent installed and that it is running."
        exit 1
    fi
fi

# Get the current date
cur_date="$(date +%Y-%m-%d)"

# Trim the trailing slash from the destination path and remove any duplicate slashes from the destination path
dest_path=$(echo "$_arg_destination" | sed 's/\/$//' | sed 's/\/\+/\//g')

if [ -e "${dest_path}" ]; then
    echo "[Info] The destination path (${dest_path}) exists."
else
    echo "[Warn] The destination path (${dest_path}) does not exist."
    if [[ "${_arg_createPath}" == "true" ]]; then
        echo "[Info] Creating the destination path (${dest_path})"
        mkdir -p "${dest_path}"
    else
        echo "[Error] The destination path (${dest_path}) does not exist."
        exit 1
    fi
fi

echo "[Info] Exporting logs to $dest_path/NinjaSupportLogs.zip"

# Collect the logs from the following directories
if zip -r -q "$dest_path/$cur_date-NinjaLogs.zip" "$_data_path/logs" "$_data_path/policy" "$_data_path/jsonoutput" "$_data_path/jsoninput" "$_data_path/patch"; then
    echo "[Info] Logs exported to $dest_path/$cur_date-NinjaLogs.zip"
else
    echo "[Error] Failed to export logs to $dest_path/$cur_date-NinjaLogs.zip"
    exit 1
fi

 

Risparmia tempo con gli oltre 300 script del Dojo NinjaOne.

Accedi oggi stesso.

Analisi dettagliata dello script per esportare i log NinjaOne su macOS

Panoramica dei parametri

Lo script per esportare i log NinjaOne su macOS inizia definendo e analizzando i parametri forniti dall’utente:

  • –destination o -d: Specifica la directory in cui verranno esportati i log. L’impostazione predefinita è /private/tmp.
  • -createPath o -c: Indica se creare la directory di destinazione nel caso in cui non esista.
  • -help o -h: Visualizza le istruzioni d’uso.

Funzionalità di aiuto

La funzione print_help fornisce una guida per gli utenti che non hanno familiarità con i parametri dello script. Questa guida illustra in dettaglio lo scopo di ogni flag, assicurando chiarezza.

Parsing degli argomenti della riga di comando

La funzione parse_commandline elabora gli argomenti in ingresso. Convalida gli input richiesti, controlla gli argomenti inattesi e assegna i valori alle variabili dello script per esportare i log NinjaOne su macOS.

Risolvere il percorso dei dati NinjaOne

Lo script per esportare i log NinjaOne su macOS identifica la posizione dei log NinjaOne utilizzando:

  1. La variabile d’ambiente NINJA_DATA_PATH, se impostata.
  2. Un fallback predefinito a /Applications/NinjaRMMAgent/programdata.

Se nessuno dei due percorsi è disponibile, lo script per esportare i log NinjaOne su macOS termina con un errore, assicurando che gli utenti siano informati della mancanza dell’agente NinjaOne.

Preparazione della directory di destinazione

Lo script per esportare i log NinjaOne su macOS pulisce e convalida il percorso di destinazione. Se la directory non esiste:

  • Crea la directory se è impostato il flag –createPath.
  • Altrimenti, esce con un errore.

Esportare i log

Utilizzando l’utility zip, lo script per esportare i log NinjaOne su macOS raccoglie i log dalle directory NinjaOne predefinite (logs, policy, jsonoutput, jsoninput, patch) e li comprime in un file ZIP con data e ora. Ciò garantisce un facile recupero e organizzazione dei log esportati.

Casi d’uso potenziali

Scenario ipotetico: risoluzione dei problemi di prestazioni degli endpoint

Immagina un MSP che gestisce più endpoint utilizzando NinjaOne. Un cliente segnala prestazioni lente su un dispositivo macOS. Invece di controllare manualmente i log, il tecnico IT esegue questo script per esportare i log NinjaOne su macOS:

  • Esporta i log in una directory predefinita.
  • Esamina i log compressi alla ricerca di schemi che si ripetono o errori.
  • Individua la causa principale, per esempio un’errata configurazione dei criteri o problemi di patch.

L’automazione fornita dallo script per esportare i log NinjaOne su macOS consente di risparmiare tempo e garantisce una diagnostica accurata.

Confronto con metodi alternativi

L’esportazione manuale dei log comporta la navigazione nelle directory, la selezione dei file pertinenti e la loro compressione. Questo approccio è soggetto a errori e richiede molto tempo.

L’utilizzo dell’interfaccia web di NinjaOne per il recupero dei log è un’altra opzione, ma potrebbe mancare di flessibilità o di capacità di automazione su macOS. L’approccio a riga di comando dello script per esportare i log NinjaOne su macOS offre precisione e ripetibilità, cose che lo rendono ideale per i professionisti IT che hanno familiarità con lo scripting.

Domande frequenti

Cosa succede se la directory di destinazione non esiste?
Lo script per esportare i log NinjaOne su macOS può creare la directory se viene utilizzato il flag –createPath. Altrimenti, terminerà con un errore.

Questo script per esportare i log NinjaOne su macOS può essere eseguito su Linux o Windows?
Pur essendo stato progettato per macOS, potrebbe essere adattato a Linux. Windows richiederebbe uno script o un approccio diverso a causa delle differenze di sistema.

Quali log sono inclusi nel file ZIP?
Lo script per esportare i log NinjaOne su macOS raccoglie i log da directory come logs, policy, jsonoutput, jsoninput e patch.

Implicazioni per la sicurezza informatica

I log esportati contengono informazioni sensibili, come configurazioni e stati del sistema. Una gestione errata di questi file potrebbe esporre i dati ad alcune vulnerabilità. I team IT devono applicare controlli di accesso rigorosi e crittografare i log esportati quando li archiviano o li trasmettono.

Automatizzando l’esportazione dei log, lo script per esportare i log NinjaOne su macOS riduce anche le finestre temporali in cui i log potrebbero essere inaccessibili durante gli incidenti, rafforzando la resilienza operativa.

Raccomandazioni per l’uso dello script

  1. Eseguilo in un ambiente sicuro: Assicurati che solo il personale autorizzato abbia accesso allo script e ai log esportati.
  2. Testa in sistemi non di produzione: Convalida lo script su sistemi non critici prima di distribuirlo su larga scala.
  3. Pianifica esportazioni regolari: Integra lo script con un task scheduler come cron per l’esportazione periodica dei log.

Considerazioni finali

La possibilità di esportare in modo efficiente i file di log NinjaOne su macOS è un vantaggio significativo per i professionisti IT e gli MSP. Questo script Bash non solo semplifica il processo per esportare i log NinjaOne su macOS, ma garantisce anche coerenza e precisione. Gli utenti NinjaOne possono sfruttare questa automazione per migliorare le attività di troubleshooting e quelle legate alla conformità, capacità che evidenziano ulteriormente il valore della piattaforma nella 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ù sulla distribuzione remota di script con NinjaOne, fai un tour dal vivo, o inizia la tua prova gratuita della piattaforma NinjaOne.

Categorie:

Ti potrebbe interessare anche

×

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.