J'essaie d'utiliser NTPD pour mettre à jour l'heure de ma machine Linux vers un serveur NTP spécifié.
Voici le scénario:
Chaque fois que la machine Linux démarre, je veux mettre à jour l'heure à partir du serveur NTP et si elle ne réussit pas, je veux réessayer toutes les 5 minutes jusqu'à ce que cela réussisse (max est de 2 heures).
J'ai cherché autour et j'ai trouvé que je devais (?) Utiliser NTPD et utiliser une commande comme:
#ntpdate ntp.server.com
(avant de démarrer NTPD)
#ntpd some_options_to_start
Les questions sont:
- Comment savoir si l'heure a bien été mise à jour par ces commandes?
- Puis-je définir l'intervalle de mise à jour de l'heure à partir de ntpd? (ou je dois utiliser quelque chose comme
sleep
et boucler avecdo
..while
/for
dans le shell?)
Notez que je veux exécuter les commandes ci-dessus dans un script shell et mettre le shell dans un serveur web. Ensuite, les clients (avec un navigateur Web) exécuteront le script sur le site Web. J'ai donc besoin de vérifier si la mise à jour est réussie ou de ne pas envoyer de résultat au client (sur le Web).
Utilisez ntpstat.
la source
ntpq -p
montré aucun homologue. Je ne fais donc pas confiance à cet utilitaire.Pour répondre à la première question, il
ntpdate
vous indique généralement ce qu'il a fait ou n'a peut-être pas fait.Le démon NTP
ntpd
, s'exécute en permanence et demande de temps en temps aux serveurs NTP (généralement configurés dans/etc/ntp.conf
). Vous ne devriez pas avoir à exécuter votre script toutes les 5 minutes.ntpdate
devrait mettre la machine en synchronisation avec le serveur, etntpd
fonctionnera en arrière-plan et la gardera synchronisée. Vous ne définissez pas l'intervalle que ntpd essaie, il ajuste l'intervalle en fonction de la façon dont il perçoit les dérives de l'horloge locale à partir des serveurs et de la qualité des connexions aux serveurs.Vous pouvez utiliser un programme nommé
ntpdc
pour voir ce quintpd
reste comme information:Je pense que le nombre qui vous intéresse généralement est "offset", c'est le nombre de secondes pendant lesquelles votre horloge locale est éloignée de celle du serveur.
Comme la
man
page desntpdc
états pour la commande "pairs":Donc, clairement, le "décalage" est en secondes.
Il semble que
ntpdc
soit obsolète, remplacé parntpq
.ntpq
a une commande interactive "pairs", qui donne "décalage" en millisecondes. Mon serveur Redhat possède les deuxntpdc
etntpq
, vous devrez donc faire attention.la source
ntp-wait
a été fait pour ce problème.Cinq minutes avec
man ntp-wait
et vous devriez être opérationnel ...la source
J'ai également ajouté au script bash @BillTHor une vérification du code de sortie ntpdstat> 0:
[MISE À JOUR] puisque le script utilisant la sortie ntpq était inutile pour le décalage larget (plus de 4 chiffres de décalage), j'ai essayé une nouvelle version utilisant uniquement ntpstat:
la source
Le décalage NTP peut être obtenu avec le pipeline UNIX suivant:
Le nombre de pairs NTP peut être obtenu avec le pipeline UNIX suivant:
Pour la compensation NTP, nous utilisons:
Pour le nombre de pairs NTP, nous utilisons:
Configuration de surveillance NTP compatible Zabbix (source: Joyent):
Plugins de surveillance NTP prêts pour Nagios:
check_ntp_offset:
check_ntp_peers:
Je devrais vraiment laisser l'avertissement et les seuils critiques dans les scripts Nagios être configurables avec -w et -c. Sans cela, ils ne sont pas vraiment entièrement prêts pour les plugins. Plus d'informations à ce sujet dans un didacticiel ici: http://www.kernel-panic.it/openbsd/nagios/nagios6.html
la source
Chrony est censé gérer votre cas d'utilisation mieux que NTPd (marche / arrêt du réseau et de la machine, suspension, etc.). Voir
http://fedoraproject.org/wiki/Features/ChronyDefaultNTP
RE pourquoi je pense que chronny est bon: il est venu pré-installé sur ma machine fedora et je n'ai jamais eu de problème avec (utilisé depuis des années maintenant). Je n'ai jamais eu de problème avec ntpd dans le passé aussi, mais si vous lisez le lien que j'ai fourni, il y a quelques informations sur pourquoi chrony est meilleur pour les non-toujours sur les machines. C'est pourquoi j'ai suggéré à l'op de l'essayer, cela peut ou peut ne pas fonctionner mieux pour lui. C'est donc juste une autre bonne option à essayer avant d'entrer dans trop de réglages, d'optimisation et de piratage de ntpd.
la source
la source
Identique à la réponse précédente ci-dessus, mais avec une légère modification car la commande précédente exécutera l'instruction if pour autant de décalages, c.-à-d. Si le décalage est de 3, elle imprimera NTP à 0,1 ... 3 fois avant la fermeture. Cela peut être gênant si vous avez un serveur qui est loin d'être synchronisé. Il existe probablement un moyen de supprimer la boucle for également ...
la source