Exporter les fichiers journaux Ninja sur macOS avec un script Bash

Une gestion efficace des journaux est essentielle pour les professionnels de l’informatique et les fournisseurs de services gérés (MSP). Qu’il s’agisse de résoudre des problèmes ou d’assurer la conformité, l’accès aux bons journaux peut s’avérer salvateur. Le script Bash fourni rationalise le processus d’exportation des fichiers journaux Ninja sur macOS, ce qui en fait un outil précieux pour les environnements informatiques. Cet article présente le script, ses cas d’utilisation et les bonnes pratiques pour le déployer.

Historique de la gestion des journaux Ninja

NinjaOne est une solution complète de gestion informatique, et ses agents génèrent des journaux qui peuvent fournir des informations cruciales sur les performances, les politiques et les configurations du système. Pour les utilisateurs de macOS, la localisation et l’exportation manuelles de ces journaux peuvent s’avérer fastidieuses. Ce script automatise le processus, en veillant à ce que les journaux soient exportés dans un répertoire spécifié dans un format cohérent.

Les professionnels de l’informatique et les entreprises MSP ont souvent besoin de ces journaux à des fins de diagnostic, d’audit ou de conformité. En automatisant les exportations de journaux, le script réduit les efforts manuels et minimise le risque d’erreur humaine.

Le script

#!/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

 

Gagnez du temps avec plus de 300+ scripts du Dojo NinjaOne.

Obtenir l’accès

Analyse du script, étape par étape

Aperçu des paramètres

Le script commence par définir et analyser les paramètres fournis par l’utilisateur :

  • –destination ou -d : spécifie le répertoire dans lequel les journaux seront exportés. La valeur par défaut est /private/tmp.
  • –createPath ou -c : indique s’il faut créer le répertoire de destination s’il n’existe pas.
  • –help ou -h : affiche les instructions d’utilisation.

Fonctionnalité d’aide

La fonction print_help fournit des conseils aux utilisateurs qui ne sont pas familiers des paramètres de script. Elle détaille l’objectif de chaque flag, pour plus de clarté.

Analyse des arguments de la ligne de commande

La fonction parse_commandline traite les arguments d’entrée. Elle valide les entrées requises, vérifie les arguments inattendus et attribue des valeurs aux variables du script.

Résolution du chemin d’accès aux données NinjaOne

Le script identifie l’emplacement des journaux Ninja en utilisant :

  1. la variable d’environnement NINJA_DATA_PATH, si elle est définie.
  2. un repli par défaut sur /Applications/NinjaRMMAgent/programdata.

Si aucun chemin n’est disponible, le script se termine par une erreur, ce qui garantit que les utilisateurs sont informés de l’absence de l’agent NinjaOne.

Préparation du répertoire de destination

Le script nettoie et valide le chemin de destination. Si le répertoire n’existe pas :

  • il crée le répertoire si l’option –createPath est activée.
  • Sinon, il se termine sur une erreur.

Exportation des journaux

À l’aide de l’utilitaire zip, le script collecte les journaux dans des répertoires NinjaOne prédéfinis (logs, policy, jsonoutput, jsoninput, patch) et les compresse dans un fichier ZIP horodaté. Cela permet de retrouver et d’organiser facilement les journaux exportés.

Cas d’utilisation potentiels

Cas de figure hypothétique : Résoudre les problèmes de performance des terminaux

Imaginez un MSP qui gère plusieurs terminaux à l’aide de NinjaOne. Un client signale des lenteurs sur un appareil macOS. Au lieu d’examiner manuellement les journaux, le technicien informatique exécute ce script :

  • il exporte les journaux dans un répertoire prédéfini.
  • Il examine les journaux compressés pour y déceler des modèles ou des erreurs.
  • Il identifie la cause première, telle qu’une mauvaise configuration de la stratégie ou des problèmes de correctifs.

L’automatisation fournie par le script permet de gagner du temps et de garantir des diagnostics précis.

Comparaisons avec d’autres méthodes

L’exportation manuelle des journaux implique de naviguer dans les répertoires, de sélectionner les fichiers pertinents et de les compresser. Cette approche est sujette à des erreurs et prend du temps.

L’utilisation de l’interface web de NinjaOne pour la récupération des journaux est une autre option, mais elle peut manquer de flexibilité ou de capacités d’automatisation sur macOS. L’approche en ligne de commande du script offre précision et reproductibilité, ce qui en fait un outil idéal pour les professionnels de l’informatique familiarisés avec l’écriture de scripts.

FAQ

Que se passe-t-il si le répertoire de destination n’existe pas ?
Le script peut créer le répertoire si l’option –createPath est utilisée. Sinon, il se termine sur une erreur.

Ce script peut-il fonctionner sous Linux ou Windows ?
Conçu pour macOS, il pourrait être adapté à Linux. Windows nécessiterait un script ou une approche différente en raison des différences de système.

Quels sont les journaux inclus dans le fichier ZIP ?
Le script collecte les journaux à partir de répertoires tels que logs, policy, jsonoutput, jsoninput et patch.

Implications pour la sécurité informatique

Les journaux exportés contiennent des informations sensibles, telles que les configurations et les états du système. Une mauvaise manipulation de ces fichiers peut exposer des vulnérabilités. Les équipes informatiques doivent appliquer des contrôles d’accès stricts et chiffrer les journaux exportés lorsqu’ils sont stockés ou transmis.

En automatisant les exportations de journaux, le script réduit également les fenêtres temporelles pendant lesquelles les journaux peuvent être inaccessibles en cas d’incident, ce qui renforce la résilience opérationnelle.

Recommandations pour l’utilisation du script

  1. Exécutez-le dans un environnement sécurisé : veillez à ce que seul le personnel autorisé ait accès au script et aux journaux exportés.
  2. Testez-le dans les systèmes hors production : validez le script sur des systèmes non critiques avant de le déployer à grande échelle.
  3. Programmez des exportations régulières : intégrez le script à un planificateur de tâches tel que cron pour l’exportation périodique des journaux.

Conclusion

La possibilité d’exporter efficacement les fichiers journaux Ninja sur macOS est un avantage significatif pour les professionnels de l’informatique et les entreprises MSP. Ce script Bash simplifie non seulement le processus, mais garantit également la cohérence et la précision. Les utilisateurs de NinjaOne peuvent tirer parti de cette automatisation pour améliorer leurs efforts de dépannage et de conformité, ce qui souligne encore la valeur de la plateforme dans la gestion informatique.

Pour aller plus loin

Pour créer une équipe informatique efficace et performante, il est essentiel d'avoir une solution centralisée qui joue le rôle de nœud principal pour vos services. NinjaOne permet aux équipes informatiques de surveiller, gérer, sécuriser et prendre en charge tous les appareils, où qu'ils soient, sans avoir besoin d'une infrastructure complexe sur site. Pour en savoir plus sur NinjaOne Endpoint Management, participez à une visite guidée, ou profitez d'un essai gratuit de la plateforme NinjaOne.

Catégories :

Vous pourriez aussi aimer

×

Voir NinjaOne en action !

En soumettant ce formulaire, j'accepte la politique de confidentialité de NinjaOne.

Termes et conditions NinjaOne

En cliquant sur le bouton “J’accepte” ci-dessous, vous indiquez que vous acceptez les termes juridiques suivants ainsi que nos conditions d’utilisation:

  • Droits de propriété: NinjaOne possède et continuera de posséder tous les droits, titres et intérêts relatifs au script (y compris les droits d’auteur). NinjaOne vous accorde une licence limitée pour l’utilisation du script conformément à ces conditions légales.
  • Limitation de l’utilisation: Les scripts ne peuvent être utilisés qu’à des fins personnelles ou professionnelles internes légitimes et ne peuvent être partagés avec d’autres entités.
  • Interdiction de publication: Vous n’êtes en aucun cas autorisé à publier le script dans une bibliothèque de scripts appartenant à, ou sous le contrôle d’un autre fournisseur de logiciels.
  • Clause de non-responsabilité: Le texte est fourni “tel quel” et “tel que disponible”, sans garantie d’aucune sorte. NinjaOne ne promet ni ne garantit que le script sera exempt de défauts ou qu’il répondra à vos besoins ou attentes particulières.
  • Acceptation des risques: L’utilisation du script est sous votre propre responsabilité. Vous reconnaissez qu’il existe certains risques inhérents à l’utilisation du script, et vous comprenez et assumez chacun de ces risques.
  • Renonciation et exonération de responsabilité: Vous ne tiendrez pas NinjaOne pour responsable des conséquences négatives ou involontaires résultant de votre utilisation du script, et vous renoncez à tout droit ou recours légal ou équitable que vous pourriez avoir contre NinjaOne en rapport avec votre utilisation du script.
  • EULA: Si vous êtes un client de NinjaOne, votre utilisation du script est soumise au contrat de licence d’utilisateur final qui vous est applicable (End User License Agreement (EULA)).