{"id":534771,"date":"2025-09-30T18:49:29","date_gmt":"2025-09-30T18:49:29","guid":{"rendered":"https:\/\/www.ninjaone.com\/?post_type=script_hub&#038;p=534771"},"modified":"2025-09-30T18:49:29","modified_gmt":"2025-09-30T18:49:29","slug":"synchroniser-l-heure-sur-macos-avec-un-script-shell","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/fr\/script-hub\/synchroniser-l-heure-sur-macos-avec-un-script-shell\/","title":{"rendered":"Comment synchroniser l&rsquo;heure sur macOS avec un script Shell"},"content":{"rendered":"<p>La synchronisation pr\u00e9cise de l&rsquo;heure sur les terminaux est essentielle pour la gestion informatique. Qu&rsquo;il s&rsquo;agisse de garantir une authentification transparente ou d&rsquo;aligner les journaux sur les syst\u00e8mes distribu\u00e9s, l&rsquo;horloge du syst\u00e8me joue un r\u00f4le essentiel. Pour les administrateurs informatiques et les <a href=\"https:\/\/www.ninjaone.com\/fr\/quest-ce-quun-msp\/\">fournisseurs de services g\u00e9r\u00e9s (MSP)<\/a>, en particulier ceux qui g\u00e8rent des flottes d&rsquo;appareils <a href=\"https:\/\/www.ninjaone.com\/fr\/plateforme-de-gestion-de-terminaux\/gestion-des-terminaux-mac\/\">macOS<\/a>, le fait de disposer d&rsquo;un moyen coh\u00e9rent et automatis\u00e9 d&rsquo;appliquer l&rsquo;exactitude de l&rsquo;heure permet d&rsquo;\u00e9viter les interruptions, d&rsquo;am\u00e9liorer la s\u00e9curit\u00e9 et de r\u00e9duire le temps de d\u00e9pannage. Cet article explique comment <strong>synchroniser l&rsquo;heure sur macOS avec un script shell<\/strong> et d&rsquo;outils natifs, offrant ainsi une alternative fiable et contr\u00f4l\u00e9e aux param\u00e8tres bas\u00e9s sur l&rsquo;interface graphique.<\/p>\n<h2>Contexte<\/h2>\n<p>macOS offre une prise en charge int\u00e9gr\u00e9e de la synchronisation de l&rsquo;heure du r\u00e9seau via les <strong>Param\u00e8tres du syst\u00e8me<\/strong>\u00a0ou l&rsquo;utilitaire de ligne de commande systemsetup. Toutefois, le fait de s&rsquo;appuyer uniquement sur la configuration manuelle &#8211; ou d&rsquo;attendre des utilisateurs finaux qu&rsquo;ils conservent ces param\u00e8tres intacts &#8211; introduit de la variabilit\u00e9. L&rsquo;automatisation de la synchronisation temporelle \u00e0 l&rsquo;aide de scripts shell garantit la coh\u00e9rence et permet aux \u00e9quipes informatiques de v\u00e9rifier, d&rsquo;appliquer et de rendre compte de la configuration lors d&rsquo;audits ou de contr\u00f4les automatis\u00e9s du syst\u00e8me.<\/p>\n<p>Pour les MSP qui utilisent des outils comme NinjaOne, le d\u00e9ploiement d&rsquo;un tel script dans l&rsquo;ensemble de l&rsquo;organisation permet de centraliser l&rsquo;application des normes de temps. Qu&rsquo;il s&rsquo;agisse de conformit\u00e9 r\u00e9glementaire, de corr\u00e9lation d&rsquo;\u00e9v\u00e9nements syst\u00e8me ou de communication s\u00e9curis\u00e9e, un moyen fiable de synchroniser l&rsquo;heure de macOS devient une exigence fondamentale.<\/p>\n<h2>Le script\u00a0:<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">#!\/usr\/bin\/env bash\r\n#\r\n# Description: Synchronize the time on macOS using the system's network time server. This can be done via Terminal: systemsetup -setusingnetworktime on, or Apple menu &gt; System Settings &gt; Time &amp; Date, then turn on 'Set time and date automatically'.\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# Minimum OS Architecture Supported: macOS 10.13 (Ventura)\r\n#\r\n# Release Notes: Initial Release\r\n#\r\n\r\n# When run directly without testing, the \"__()\" function does nothing.\r\ntest || __() { :; }\r\n\r\n__ begin __\r\n\r\ndie() {\r\n    local _ret=\"${2:-1}\"\r\n    echo \"$1\" &gt;&amp;2\r\n    exit \"${_ret}\"\r\n}\r\n\r\n# Check if the script is being run as root. If not, exit with an error message.\r\nif [[ $(id -u) -ne 0 ]]; then\r\n    die \"[Error] This script must be run with root permissions. Try running it with sudo or as the system\/root user.\" 1\r\nfi\r\n\r\n# Sync the time immediately\r\nif command -v sntp &gt;\/dev\/null; then\r\n    if sntp -sS \"$(systemsetup -getnetworktimeserver | awk '{print $4}')\" 2&gt;\/dev\/null 1&gt;\/dev\/null; then\r\n        echo \"\"\r\n        echo \"[Info] Time synchronized successfully.\"\r\n    else\r\n        die \"[Error] Failed to synchronize time.\" 1\r\n    fi\r\nelif command -v ntpdate &gt;\/dev\/null; then\r\n    if ntpdate -u \"$(systemsetup -getnetworktimeserver | awk '{print $4}')\" 2&gt;\/dev\/null 1&gt;\/dev\/null; then\r\n        echo \"\"\r\n        echo \"[Info] Time synchronized successfully.\"\r\n    else\r\n        die \"[Error] Failed to synchronize time.\" 1\r\n    fi\r\nelse\r\n    die \"[Error] No time sync command found. Either sntp or ntpdate should be available.\" 1\r\nfi\r\n\r\necho \"\"\r\necho \"[Info] Time Synchronization Settings:\"\r\necho \"\"\r\n\r\nif ! systemsetup -getusingnetworktime -getnetworktimeserver -gettimezone; then\r\n    die \"[Error] Failed to retrieve time synchronization settings.\" 1\r\nfi\r\n\r\n__ end __<\/pre>\n<p>&nbsp;<\/p>\n\n<h2>Description d\u00e9taill\u00e9e<\/h2>\n<p>Voici une analyse \u00e9tape par \u00e9tape de ce que fait le script :<\/p>\n<h3>1. Shebang et m\u00e9tadonn\u00e9es<\/h3>\n<p>bash<\/p>\n<p>CopyEdit<\/p>\n<p>#!\/usr\/bin\/env bash<\/p>\n<p>D\u00e9finit l&rsquo;interpr\u00e9teur de scripts (bash) afin d&rsquo;assurer la portabilit\u00e9 dans tous les environnements.<\/p>\n<p>Les commentaires qui suivent le d\u00e9crivent :<\/p>\n<ul>\n<li>La fonction du script<\/li>\n<li>Prise en charge minimale du syst\u00e8me d&rsquo;exploitation (macOS 10.13 ou version ult\u00e9rieure)<\/li>\n<li>Instructions d&rsquo;utilisation via le terminal ou les pr\u00e9f\u00e9rences du syst\u00e8me<\/li>\n<li>Notes sur la version initiale<\/li>\n<\/ul>\n<h3>2. Fonction d&rsquo;aide et v\u00e9rification des autorisations<\/h3>\n<p>bash<\/p>\n<p>CopyEdit<\/p>\n<p>die() { &#8230; }<\/p>\n<p>La fonction die simplifie la gestion des erreurs, en quittant le script de mani\u00e8re \u00e9l\u00e9gante avec un message et un code de retour optionnel.<\/p>\n<p>bash<\/p>\n<p>CopyEdit<\/p>\n<p>if [[ $(id -u) -ne 0 ]]; then<\/p>\n<p>die \u00ab\u00a0[Error] This script must be run with root permissions&#8230;\u00a0\u00bb<\/p>\n<p>fi<\/p>\n<p>V\u00e9rifie si le script est ex\u00e9cut\u00e9 avec les privil\u00e8ges de l&rsquo;administrateur (root). La synchronisation des param\u00e8tres temporels et l&rsquo;utilisation d&rsquo;outils syst\u00e8me tels que systemsetuprequi\u00e8rent un acc\u00e8s \u00e9lev\u00e9.<\/p>\n<h3>3. Ex\u00e9cution de la synchronisation temporelle<\/h3>\n<p>Le script tente deux m\u00e9thodes pour synchroniser l&rsquo;heure :<\/p>\n<ul>\n<li><strong>sntp<\/strong>\u00a0(de pr\u00e9f\u00e9rence pour macOS)<\/li>\n<li><strong>ntpdate<\/strong>\u00a0(solution de repli si sntp n&rsquo;est pas disponible)<\/li>\n<\/ul>\n<p>bash<\/p>\n<p>CopyEdit<\/p>\n<p>if sntp -sS \u00ab\u00a0$(systemsetup -getnetworktimeserver | awk &lsquo;{print $4}&rsquo;)\u00a0\u00bb &#8230;<\/p>\n<ul>\n<li>systemsetup -getnetworktimeserver r\u00e9cup\u00e8re le serveur NTP configur\u00e9.<\/li>\n<li>awk &lsquo;{print $4}&rsquo; isole le nom du serveur de la sortie de la commande.<\/li>\n<li>L&rsquo;heure est synchronis\u00e9e silencieusement, sauf en cas d&rsquo;erreur.<\/li>\n<\/ul>\n<h3>4. V\u00e9rification post-synchronisation<\/h3>\n<p>bash<\/p>\n<p>CopyEdit<\/p>\n<p>systemsetup -getusingnetworktime -getnetworktimeserver -gettimezone<\/p>\n<p>Affiche les param\u00e8tres de synchronisation de l&rsquo;heure actuelle afin de fournir une visibilit\u00e9 apr\u00e8s l&rsquo;action de synchronisation.<\/p>\n<h2>Cas d&rsquo;utilisation potentiels<\/h2>\n<h3>Sc\u00e9nario concret<\/h3>\n<p>L&rsquo;administrateur informatique d&rsquo;un district scolaire g\u00e8re plus de 500 appareils macOS dans les salles de classe. La d\u00e9rive temporelle al\u00e9atoire entra\u00eene l&rsquo;\u00e9chec de l&rsquo;authentification Kerberos et des erreurs SSO. En d\u00e9ployant ce script shell via NinjaOne, l&rsquo;administrateur peut :<\/p>\n<ul>\n<li>Forcer une synchronisation temporelle unique \u00e0 distance.<\/li>\n<li>Programmer le script p\u00e9riodiquement pour une application continue.<\/li>\n<li>Enregistrer les d\u00e9faillances dans NinjaOne pour suivre les machines qui pourraient n\u00e9cessiter une inspection plus approfondie.<\/li>\n<\/ul>\n<h2>Comparaisons<\/h2>\n<h3>Script vs GUI<\/h3>\n<table>\n<tbody>\n<tr>\n<td style=\"text-align: center;\"><strong>Fonction<\/strong><\/td>\n<td style=\"text-align: center;\"><strong>Script Shell<\/strong><\/td>\n<td style=\"text-align: center;\"><strong>Param\u00e8tres de l&rsquo;interface graphique<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Automatisable<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<tr>\n<td>Coh\u00e9rence entre les appareils<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<tr>\n<td>N\u00e9cessite l&rsquo;intervention de l&rsquo;utilisateur<\/td>\n<td>\u274c<\/td>\n<td>\u2705<\/td>\n<\/tr>\n<tr>\n<td>Convivialit\u00e9 de l&rsquo;\u00e9loignement<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Script vs Daemons \u00a0launchd<\/h3>\n<p>Bien qu&rsquo;un job launchd persistant puisse assurer une synchronisation temporelle continue, il introduit une plus grande complexit\u00e9. Ce script est tr\u00e8s utile,\u00a0<strong>qu&rsquo;il s&rsquo;agisse d&rsquo;ex\u00e9cutions ad hoc ou programm\u00e9es, ce qui est parfait<\/strong> pour un d\u00e9ploiement l\u00e9ger et centralis\u00e9 via des outils <a href=\"https:\/\/www.ninjaone.com\/fr\/blog\/definition-de-la-surveillance-et-gestion-a-distance\/\">RMM<\/a>.<\/p>\n<h2>Questions fr\u00e9quentes<\/h2>\n<h3>Q\u00a0: Dois-je installer\u00a0sntp\u00a0ou\u00a0ntpdate\u00a0?<\/h3>\n<p>R : macOS inclut sntp par d\u00e9faut, mais certaines versions simplifi\u00e9es peuvent ne pas l&rsquo;inclure. Le script v\u00e9rifie gracieusement les deux.<\/p>\n<h3>Q\u00a0: Quelles sont les versions de macOS prises en charge ?<\/h3>\n<p>R\u00a0: Le script est compatible avec macOS 10.13 et plus, y compris Ventura et Sonoma.<\/p>\n<h3>Q\u00a0: Cela va-t-il entrer en conflit avec les param\u00e8tres de synchronisation de l&rsquo;heure existants ?<\/h3>\n<p>R\u00a0: Non, il respecte le serveur de temps r\u00e9seau configur\u00e9 et effectue simplement une synchronisation imm\u00e9diate.<\/p>\n<h3>Q\u00a0: Comment automatiser cette op\u00e9ration hebdomadaire ?<\/h3>\n<p>R\u00a0: Utilisez l&rsquo;automatisation par script de NinjaOne ou macOS cron\/launchd en fonction de votre m\u00e9thode de d\u00e9ploiement.<\/p>\n<h2>Implications<\/h2>\n<p>La d\u00e9synchronisation du temps peut compromettre :<\/p>\n<ul>\n<li><strong>Protocoles d&rsquo;authentification<\/strong>\u00a0(par exemple, Kerberos)<\/li>\n<li><strong>Corr\u00e9lation des journaux<\/strong>\u00a0entre les syst\u00e8mes<\/li>\n<li><strong>Validation du certificat<\/strong><\/li>\n<\/ul>\n<p>L&rsquo;automatisation de la synchronisation du temps renforce l&rsquo;int\u00e9grit\u00e9 du syst\u00e8me et \u00e9limine une cat\u00e9gorie de probl\u00e8mes silencieux et difficiles \u00e0 tracer.<\/p>\n<h2>Recommandations<\/h2>\n<ul>\n<li>Pour une ex\u00e9cution r\u00e9ussie, <strong>le script doit toujours \u00eatre ex\u00e9cut\u00e9 en tant que root<\/strong>\u00a0.<\/li>\n<li><strong>Planifiez des ex\u00e9cutions de routine<\/strong>\u00a0pour \u00e9viter les d\u00e9rives futures, en particulier dans les environnements mobiles ou BYOD.<\/li>\n<li><strong>Combinez avec les m\u00e9canismes de journalisation<\/strong>\u00a0pour capturer les r\u00e9sultats et v\u00e9rifier la conformit\u00e9.<\/li>\n<li><strong>V\u00e9rifiez la disponibilit\u00e9 de l&rsquo;outil<\/strong>\u00a0(sntp, ntpdate) dans votre parc d&rsquo;appareils avant de le d\u00e9ployer \u00e0 grande \u00e9chelle.<\/li>\n<\/ul>\n<h2>Conclusion<\/h2>\n<p>La synchronisation de l&rsquo;heure sur macOS \u00e0 l&rsquo;aide d&rsquo;un script shell offre aux professionnels de l&rsquo;informatique et aux MSP une m\u00e9thode l\u00e9g\u00e8re mais puissante pour assurer l&rsquo;int\u00e9grit\u00e9 du syst\u00e8me. Lorsqu&rsquo;elle est int\u00e9gr\u00e9e \u00e0 des plateformes RMM telles que\u00a0<strong>NinjaOne<\/strong>, cette approche devient encore plus efficace. Les administrateurs peuvent cr\u00e9er des scripts, d\u00e9ployer, surveiller et produire des rapports, le tout \u00e0 partir d&rsquo;une console centralis\u00e9e, afin de s&rsquo;assurer que chaque appareil macOS respecte les normes de l&rsquo;entreprise. La synchronisation du temps peut sembler un d\u00e9tail mineur, mais dans le domaine de l&rsquo;informatique, c&rsquo;est un pilier fondamental de la stabilit\u00e9 et de la s\u00e9curit\u00e9.<\/p>\n<p>Pour les entreprises qui cherchent \u00e0 automatiser et \u00e0 \u00e9tendre leurs processus de gestion des terminaux, <a href=\"https:\/\/www.ninjaone.com\/fr\/\">NinjaOne<\/a> offre l&rsquo;environnement de script et de d\u00e9ploiement id\u00e9al pour faire de ce script un \u00e9l\u00e9ment fiable de votre bo\u00eete \u00e0 outils op\u00e9rationnelle.<\/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-534771","script_hub","type-script_hub","status-publish","hentry","script_hub_category-macos"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/script_hub\/534771","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=534771"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/media?parent=534771"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/operating_system?post=534771"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/use_cases?post=534771"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}