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.
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 :
- la variable d’environnement NINJA_DATA_PATH, si elle est définie.
- 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
- 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.
- Testez-le dans les systèmes hors production : validez le script sur des systèmes non critiques avant de le déployer à grande échelle.
- 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.