{"id":394233,"date":"2024-12-17T13:27:02","date_gmt":"2024-12-17T13:27:02","guid":{"rendered":"https:\/\/www.ninjaone.com\/?post_type=script_hub&#038;p=394233"},"modified":"2024-12-17T13:28:07","modified_gmt":"2024-12-17T13:28:07","slug":"exporter-fichiers-journaux-ninja-macos","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/fr\/script-hub\/exporter-fichiers-journaux-ninja-macos\/","title":{"rendered":"Exporter les fichiers journaux Ninja sur macOS avec un script Bash"},"content":{"rendered":"<p>Une gestion efficace des journaux est essentielle pour les professionnels de l&rsquo;informatique et les <a href=\"https:\/\/www.ninjaone.com\/fr\/quest-ce-quun-msp\">fournisseurs de services g\u00e9r\u00e9s (MSP)<\/a>. Qu&rsquo;il s&rsquo;agisse de r\u00e9soudre des probl\u00e8mes ou d&rsquo;assurer la conformit\u00e9, l&rsquo;acc\u00e8s aux bons journaux peut s&rsquo;av\u00e9rer salvateur. Le script Bash fourni rationalise le processus d&rsquo;exportation des fichiers journaux Ninja sur macOS, ce qui en fait un outil pr\u00e9cieux pour les environnements informatiques. Cet article pr\u00e9sente le script, ses cas d&rsquo;utilisation et les bonnes pratiques pour le d\u00e9ployer.<\/p>\n<h2>Historique de la gestion des journaux Ninja<\/h2>\n<p>NinjaOne est une solution compl\u00e8te de gestion informatique, et ses agents g\u00e9n\u00e8rent des journaux qui peuvent fournir des informations cruciales sur les performances, les politiques et les configurations du syst\u00e8me. Pour les utilisateurs de macOS, la localisation et l&rsquo;exportation manuelles de ces journaux peuvent s&rsquo;av\u00e9rer fastidieuses. Ce script automatise le processus, en veillant \u00e0 ce que les journaux soient export\u00e9s dans un r\u00e9pertoire sp\u00e9cifi\u00e9 dans un format coh\u00e9rent.<\/p>\n<p>Les professionnels de l&rsquo;informatique et les entreprises MSP ont souvent besoin de ces journaux \u00e0 des fins de diagnostic, d&rsquo;audit ou de conformit\u00e9. En automatisant les exportations de journaux, le script r\u00e9duit les efforts manuels et minimise le <a href=\"https:\/\/www.ninjaone.com\/blog\/how-human-error-relates-to-cybersecurity-risks\/\">risque d&rsquo;erreur humaine<\/a>.<\/p>\n<h2>Le script<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">#!\/usr\/bin\/env bash\r\n\r\n# Description: Exports the Ninja Support Logs to the specified directory for Mac.\r\n#   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.\r\n#   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. \r\n#   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. \r\n#   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. \r\n#   Warranty Disclaimer: The script is provided \u201cas is\u201d and \u201cas available\u201d, 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. \r\n#   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. \r\n#   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. \r\n#   EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).\r\n#\r\n# Preset Parameter: --destination \"\/private\/tmp\"\r\n#   The directory to export the logs to.\r\n#\r\n# Preset Parameter: --help\r\n#   Displays some help text.\r\n\r\n# 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.\r\n_arg_destination=\"\/private\/tmp\"\r\n\r\n# Help text function for when invalid input is encountered\r\nprint_help() {\r\n    printf '\\n\\n%s\\n\\n' 'Usage: [--destination|-d &lt;arg&gt;] [--createPath|-c] [--help|-h]'\r\n    printf '%s\\n' 'Preset Parameter: --destination \"\/private\/tmp\/ninjaLogs\" --createPath'\r\n    printf '\\t%s\\n' \"Replace the text encased in quotes with the directory to export the logs to.\"\r\n    printf '\\n%s\\n' 'Preset Parameter: --help'\r\n    printf '\\t%s\\n' \"Displays this help menu.\"\r\n}\r\n\r\n# Determines whether or not help text is necessary and routes the output to stderr\r\ndie() {\r\n    local _ret=\"${2:-1}\"\r\n    echo \"$1\" &gt;&amp;2\r\n    test \"${_PRINT_HELP:-no}\" = yes &amp;&amp; print_help &gt;&amp;2\r\n    exit \"${_ret}\"\r\n}\r\n\r\n# Grabbing the parameters and parsing through them.\r\nparse_commandline() {\r\n    while test $# -gt 0; do\r\n        _key=\"$1\"\r\n        case \"$_key\" in\r\n        --destination | -d)\r\n            test $# -lt 2 &amp;&amp; die \"Missing value for the optional argument '$_key'.\" 1\r\n            _arg_destination=$2\r\n            shift\r\n            ;;\r\n        --destination=*)\r\n            _arg_destination=\"${_key##--destination=}\"\r\n            ;;\r\n        --createPath | -c)\r\n            _arg_createPath=\"true\"\r\n            ;;\r\n        --help | -h)\r\n            _PRINT_HELP=yes die 0\r\n            ;;\r\n        *)\r\n            _PRINT_HELP=yes die \"FATAL ERROR: Got an unexpected argument '$1'\" 1\r\n            ;;\r\n        esac\r\n        shift\r\n    done\r\n}\r\n\r\nparse_commandline \"$@\"\r\n\r\n# If script form is used override commandline arguments\r\nif [[ -n $destination ]] &amp;&amp; [[ \"${destination}\" != \"null\" ]]; then\r\n    _arg_destination=\"$destination\"\r\nfi\r\nif [[ -n $createPath ]] &amp;&amp; [[ \"${createPath}\" == \"true\" ]]; then\r\n    _arg_createPath=\"true\"\r\nfi\r\n\r\n# Get the path to the NinjaRMMAgent from the environment variable NINJA_DATA_PATH\r\n_data_path=$(printenv | grep -i NINJA_DATA_PATH | awk -F = '{print $2}')\r\nif [[ -z \"${_data_path}\" ]]; then\r\n    # If the environment variable NINJA_DATA_PATH is not set, try to find the NinjaRMMAgent in the Applications folder\r\n    _data_path=\"\/Applications\/NinjaRMMAgent\/programdata\"\r\n    if [[ -z \"${_data_path}\" ]]; then\r\n        echo \"[Error] No NinjaRMMAgent found. Please make sure you have the NinjaRMMAgent installed and that it is running.\"\r\n        exit 1\r\n    fi\r\nfi\r\n\r\n# Get the current date\r\ncur_date=\"$(date +%Y-%m-%d)\"\r\n\r\n# Trim the trailing slash from the destination path and remove any duplicate slashes from the destination path\r\ndest_path=$(echo \"$_arg_destination\" | sed 's\/\\\/$\/\/' | sed 's\/\\\/\\+\/\\\/\/g')\r\n\r\nif [ -e \"${dest_path}\" ]; then\r\n    echo \"[Info] The destination path (${dest_path}) exists.\"\r\nelse\r\n    echo \"[Warn] The destination path (${dest_path}) does not exist.\"\r\n    if [[ \"${_arg_createPath}\" == \"true\" ]]; then\r\n        echo \"[Info] Creating the destination path (${dest_path})\"\r\n        mkdir -p \"${dest_path}\"\r\n    else\r\n        echo \"[Error] The destination path (${dest_path}) does not exist.\"\r\n        exit 1\r\n    fi\r\nfi\r\n\r\necho \"[Info] Exporting logs to $dest_path\/NinjaSupportLogs.zip\"\r\n\r\n# Collect the logs from the following directories\r\nif 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\r\n    echo \"[Info] Logs exported to $dest_path\/$cur_date-NinjaLogs.zip\"\r\nelse\r\n    echo \"[Error] Failed to export logs to $dest_path\/$cur_date-NinjaLogs.zip\"\r\n    exit 1\r\nfi\r\n<\/pre>\n<p>&nbsp;<\/p>\n\n<div class=\"in-context-cta\"><p>Gagnez du temps avec plus de 300+ scripts du Dojo NinjaOne.<\/p>\n<p>\u2192 <a class=\"waffle-rich-text-link\" href=\"https:\/\/www.ninjaone.com\/fr\/phase-de-test-gratuit\/\">Obtenir l&rsquo;acc\u00e8s<\/a><\/p>\n<\/div>\n<h2>Analyse du script, \u00e9tape par \u00e9tape<\/h2>\n<h3>Aper\u00e7u des param\u00e8tres<\/h3>\n<p>Le script commence par d\u00e9finir et analyser les param\u00e8tres fournis par l&rsquo;utilisateur\u00a0:<\/p>\n<ul>\n<li><strong>&#8211;destination ou -d<\/strong>\u00a0: sp\u00e9cifie le r\u00e9pertoire dans lequel les journaux seront export\u00e9s. La valeur par d\u00e9faut est \/private\/tmp.<\/li>\n<li><strong>&#8211;createPath ou -c<\/strong>\u00a0: indique s&rsquo;il faut cr\u00e9er le r\u00e9pertoire de destination s&rsquo;il n&rsquo;existe pas.<\/li>\n<li><strong>&#8211;help ou -h<\/strong>\u00a0: affiche les instructions d&rsquo;utilisation.<\/li>\n<\/ul>\n<h3>Fonctionnalit\u00e9 d&rsquo;aide<\/h3>\n<p>La fonction print_help fournit des conseils aux utilisateurs qui ne sont pas familiers des param\u00e8tres de script. Elle d\u00e9taille l&rsquo;objectif de chaque flag, pour plus de clart\u00e9.<\/p>\n<h3>Analyse des arguments de la ligne de commande<\/h3>\n<p>La fonction parse_commandline traite les arguments d&rsquo;entr\u00e9e. Elle valide les entr\u00e9es requises, v\u00e9rifie les arguments inattendus et attribue des valeurs aux variables du script.<\/p>\n<h3>R\u00e9solution du chemin d&rsquo;acc\u00e8s aux donn\u00e9es NinjaOne<\/h3>\n<p>Le script identifie l&#8217;emplacement des journaux Ninja en utilisant\u00a0:<\/p>\n<ol>\n<li>la variable d&rsquo;environnement NINJA_DATA_PATH, si elle est d\u00e9finie.<\/li>\n<li>un repli par d\u00e9faut sur \/Applications\/NinjaRMMAgent\/programdata.<\/li>\n<\/ol>\n<p>Si aucun chemin n&rsquo;est disponible, le script se termine par une erreur, ce qui garantit que les utilisateurs sont inform\u00e9s de l&rsquo;absence de l&rsquo;agent NinjaOne.<\/p>\n<h3>Pr\u00e9paration du r\u00e9pertoire de destination<\/h3>\n<p>Le script nettoie et valide le chemin de destination. Si le r\u00e9pertoire n&rsquo;existe pas\u00a0:<\/p>\n<ul>\n<li>il cr\u00e9e le r\u00e9pertoire si l&rsquo;option &#8211;createPath est activ\u00e9e.<\/li>\n<li>Sinon, il se termine sur une erreur.<\/li>\n<\/ul>\n<h3>Exportation des journaux<\/h3>\n<p>\u00c0 l&rsquo;aide de l&rsquo;utilitaire zip, le script collecte les journaux dans des r\u00e9pertoires NinjaOne pr\u00e9d\u00e9finis (logs, policy, jsonoutput, jsoninput, patch) et les compresse dans un fichier ZIP horodat\u00e9. Cela permet de retrouver et d&rsquo;organiser facilement les journaux export\u00e9s.<\/p>\n<h2>Cas d&rsquo;utilisation potentiels<\/h2>\n<h3>Cas de figure hypoth\u00e9tique\u00a0: R\u00e9soudre les probl\u00e8mes de performance des terminaux<\/h3>\n<p>Imaginez un MSP qui g\u00e8re plusieurs terminaux \u00e0 l&rsquo;aide de NinjaOne. Un client signale des lenteurs sur un appareil macOS. Au lieu d&rsquo;examiner manuellement les journaux, le technicien informatique ex\u00e9cute ce script\u00a0:<\/p>\n<ul>\n<li>il exporte les journaux dans un r\u00e9pertoire pr\u00e9d\u00e9fini.<\/li>\n<li>Il examine les journaux compress\u00e9s pour y d\u00e9celer des mod\u00e8les ou des erreurs.<\/li>\n<li>Il identifie la cause premi\u00e8re, telle qu&rsquo;une mauvaise configuration de la strat\u00e9gie ou des probl\u00e8mes de correctifs.<\/li>\n<\/ul>\n<p>L&rsquo;automatisation fournie par le script permet de gagner du temps et de garantir des diagnostics pr\u00e9cis.<\/p>\n<h2>Comparaisons avec d&rsquo;autres m\u00e9thodes<\/h2>\n<p>L&rsquo;exportation manuelle des journaux implique de naviguer dans les r\u00e9pertoires, de s\u00e9lectionner les fichiers pertinents et de les compresser. Cette approche est sujette \u00e0 des erreurs et prend du temps.<\/p>\n<p>L&rsquo;utilisation de l&rsquo;interface web de NinjaOne pour la r\u00e9cup\u00e9ration des journaux est une autre option, mais elle peut manquer de flexibilit\u00e9 ou de capacit\u00e9s d&rsquo;automatisation sur macOS. L&rsquo;approche en ligne de commande du script offre pr\u00e9cision et reproductibilit\u00e9, ce qui en fait un outil id\u00e9al pour les professionnels de l&rsquo;informatique familiaris\u00e9s avec l&rsquo;\u00e9criture de scripts.<\/p>\n<h2>FAQ<\/h2>\n<p><strong>Que se passe-t-il si le r\u00e9pertoire de destination n&rsquo;existe pas\u00a0?<\/strong><br \/>\nLe script peut cr\u00e9er le r\u00e9pertoire si l&rsquo;option &#8211;createPath est utilis\u00e9e. Sinon, il se termine sur une erreur.<\/p>\n<p><strong>Ce script peut-il fonctionner sous Linux ou Windows\u00a0?<\/strong><br \/>\nCon\u00e7u pour macOS, il pourrait \u00eatre adapt\u00e9 \u00e0 Linux. Windows n\u00e9cessiterait un script ou une approche diff\u00e9rente en raison des diff\u00e9rences de syst\u00e8me.<\/p>\n<p><strong>Quels sont les journaux inclus dans le fichier ZIP\u00a0?<\/strong><br \/>\nLe script collecte les journaux \u00e0 partir de r\u00e9pertoires tels que logs, policy, jsonoutput, jsoninput et patch.<\/p>\n<h2>Implications pour la s\u00e9curit\u00e9 informatique<\/h2>\n<p>Les journaux export\u00e9s contiennent des informations sensibles, telles que les configurations et les \u00e9tats du syst\u00e8me. Une mauvaise manipulation de ces fichiers peut exposer des vuln\u00e9rabilit\u00e9s. Les \u00e9quipes informatiques doivent appliquer des contr\u00f4les d&rsquo;acc\u00e8s stricts et chiffrer les journaux export\u00e9s lorsqu&rsquo;ils sont stock\u00e9s ou transmis.<\/p>\n<p>En automatisant les exportations de journaux, le script r\u00e9duit \u00e9galement les fen\u00eatres temporelles pendant lesquelles les journaux peuvent \u00eatre inaccessibles en cas d&rsquo;incident, ce qui renforce la r\u00e9silience op\u00e9rationnelle.<\/p>\n<h2>Recommandations pour l&rsquo;utilisation du script<\/h2>\n<ol>\n<li><strong>Ex\u00e9cutez-le dans un environnement s\u00e9curis\u00e9<\/strong>\u00a0: veillez \u00e0 ce que seul le personnel autoris\u00e9 ait acc\u00e8s au script et aux journaux export\u00e9s.<\/li>\n<li><strong>Testez-le dans les syst\u00e8mes hors production<\/strong>\u00a0: validez le script sur des syst\u00e8mes non critiques avant de le d\u00e9ployer \u00e0 grande \u00e9chelle.<\/li>\n<li><strong>Programmez des exportations r\u00e9guli\u00e8res<\/strong>\u00a0: int\u00e9grez le script \u00e0 un planificateur de t\u00e2ches tel que cron pour l&rsquo;exportation p\u00e9riodique des journaux.<\/li>\n<\/ol>\n<h2>Conclusion<\/h2>\n<p>La possibilit\u00e9 d&rsquo;exporter efficacement les fichiers journaux Ninja sur macOS est un avantage significatif pour les professionnels de l&rsquo;informatique et les entreprises MSP. Ce script Bash simplifie non seulement le processus, mais garantit \u00e9galement la coh\u00e9rence et la pr\u00e9cision. Les utilisateurs de NinjaOne peuvent tirer parti de cette automatisation pour am\u00e9liorer leurs efforts de d\u00e9pannage et de conformit\u00e9, ce qui souligne encore la valeur de la plateforme dans la gestion informatique.<\/p>\n","protected":false},"author":35,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","_lmt_disableupdate":"no","_lmt_disable":""},"operating_system":[4210],"use_cases":[4281],"class_list":["post-394233","script_hub","type-script_hub","status-publish","hentry","script_hub_category-macos","use_cases-configuration-generale"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/script_hub\/394233","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/script_hub"}],"about":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/types\/script_hub"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/comments?post=394233"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/media?parent=394233"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/operating_system?post=394233"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/use_cases?post=394233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}