Estoy tratando de usar NTPD para actualizar el tiempo de mi máquina Linux a un servidor NTP especificado.
Aquí está el escenario:
Cada vez que se inicia la máquina Linux, quiero actualizar la hora del servidor NTP y, si no tiene éxito, quiero volver a intentarlo cada 5 minutos hasta que tenga éxito (el máximo es de 2 horas).
Busqué y descubrí que debería (?) Usar NTPD y usar algún comando como:
#ntpdate ntp.server.com
(antes de comenzar NTPD)
#ntpd some_options_to_start
Las preguntas son:
- ¿Cómo puedo saber si el tiempo se actualizó correctamente con estos comandos?
- ¿Puedo configurar el intervalo para actualizar el tiempo desde ntpd? (¿o tengo que usar algo así
sleep
como un bucle condo
..while
/for
en shell?)
Tenga en cuenta que quiero ejecutar los comandos anteriores en un script de shell y colocaré el shell en un servidor web. Luego, los clientes (con un navegador de navegador web) ejecutarán el script en el sitio web. Por lo tanto, debo verificar si la actualización se realizó correctamente o no para enviar el resultado al cliente (a través de la web).
Usa ntpstat.
fuente
ntpq -p
no mostraba pares. Así que no estoy confiando en esta utilidad.Para responder a la primera pregunta,
ntpdate
generalmente le dice qué hizo o quizás no hizo.El demonio NTP
ntpd
, se ejecuta constantemente y solicita a los servidores NTP (generalmente configurados en/etc/ntp.conf
) el tiempo cada cierto tiempo. No debería tener que ejecutar su script cada 5 minutos.ntpdate
debería sincronizar la máquina con el servidor, yntpd
se ejecutará en segundo plano y la mantendrá sincronizada. No establece el intervalo que ntpd intenta, ajusta el intervalo en función de cómo percibe el reloj local deriva de los servidores y la calidad de las conexiones a los servidores.Puede usar un programa llamado
ntpdc
para ver qué sentpd
guarda como información:Creo que el número en el que normalmente tiene interés está "compensado", esa es la cantidad de segundos que su reloj local está apagado del reloj del servidor.
Como la
man
página dentpdc
estados para el comando "pares":Entonces, claramente, el "desplazamiento" está en segundos.
Parece que
ntpdc
está en desuso, reemplazado porntpq
.ntpq
tiene un comando interactivo "peers", que da "offset" en milisegundos. Mi servidor Redhat tiene ambosntpdc
yntpq
, por lo tanto, deberá tener cuidado.fuente
ntp-wait
fue hecho para este problema.Cinco minutos con
man ntp-wait
y deberías estar en funcionamiento ...fuente
Agregué al script @BillTHor bash también una comprobación para el código de salida ntpdstat> 0:
[ACTUALIZACIÓN] ya que el script que usaba la salida ntpq no era útil para el desplazamiento de larget (más de 4 dígitos de desplazamiento) Probé una nueva versión usando solo ntpstat:
fuente
El desplazamiento de NTP se puede obtener con la siguiente tubería de UNIX:
El recuento de pares NTP se puede obtener con la siguiente canalización de UNIX:
Para ofensas de NTP usamos:
Para el recuento de pares NTP usamos:
Configuración de monitoreo NTP listo para Zabbix (fuente: Joyent):
Complementos de monitoreo NTP listos para Nagios:
check_ntp_offset:
check_ntp_peers:
Realmente debería permitir que los umbrales críticos y de advertencia en los scripts de Nagios sean configurables con -w y -c. Realmente no están completamente listos para complementos sin eso. Más orientación sobre eso en un tutorial aquí: http://www.kernel-panic.it/openbsd/nagios/nagios6.html
fuente
Se afirma que Chrony maneja su caso de uso mejor que NTPd (encendido y apagado de la red y la máquina, suspensión, etc.). Ver
http://fedoraproject.org/wiki/Features/ChronyDefaultNTP
RE por qué creo que Chronny es bueno: vino preinstalado en mi máquina fedora y nunca he tenido ningún problema con él (lo he usado durante años). Nunca he tenido problemas con ntpd en el pasado también, pero si lees en el enlace que he proporcionado, hay alguna información sobre por qué Chrony es mejor para no siempre en las máquinas. Por eso le sugerí a la operación que lo probara, puede o no funcionar mejor para él. Por lo tanto, es solo otra buena opción para probar antes de realizar demasiados ajustes, optimizar y piratear ntpd.
fuente
fuente
Igual que la respuesta anterior anterior, pero con una ligera modificación ya que el comando anterior ejecutará la instrucción if para tantas compensaciones, es decir, si el desplazamiento es 3, imprimirá que NTP está dentro de 0.1 .... 3 veces antes del cierre. Podría ser molesto si tiene un servidor que está muy lejos de la sincronización. Probablemente también haya una forma de eliminar el bucle for ...
fuente