Estou tentando usar o NTPD para atualizar o tempo da minha máquina Linux para um servidor NTP especificado.
Aqui está o cenário:
Cada vez que a máquina Linux é inicializada, quero atualizar o horário do servidor NTP e, se não for bem-sucedido, quero tentar novamente a cada 5 minutos até obter êxito (o máximo é de 2 horas).
Eu procurei e achei que deveria (?) Usar o NTPD e usar algum comando como:
#ntpdate ntp.server.com
(antes de iniciar o NTPD)
#ntpd some_options_to_start
As perguntas são:
- Como posso saber se a hora foi atualizada com sucesso por esses comandos?
- Posso definir o intervalo para atualizar o tempo do ntpd? (ou eu tenho que usar algo como
sleep
e fazer loop comdo
..while
/for
com shell?)
Observe que eu quero executar os comandos acima em um script de shell e colocá-lo em um servidor web. Em seguida, os clientes (com um navegador da web) executarão o script no site. Portanto, preciso verificar se a atualização foi bem-sucedida ou não para enviar o resultado ao cliente (pela Web).
Use ntpstat.
fonte
ntpq -p
não apresentasse pares. Portanto, não estou confiando neste utilitário.Para responder à primeira pergunta,
ntpdate
geralmente diz o que fez ou talvez não fez.O daemon NTP
ntpd
, é executado constantemente e solicita aos servidores NTP (geralmente configurados/etc/ntp.conf
) o tempo de tempos em tempos. Você não precisa executar seu script a cada 5 minutos.ntpdate
deve colocar a máquina quase em sincronia com o servidor entpd
será executada em segundo plano e a manterá sincronizada. Você não define o intervalo que o ntpd tenta, ele ajusta o intervalo com base em como ele percebe o relógio local se desviar dos servidores e na qualidade das conexões com os servidores.Você pode usar um programa chamado
ntpdc
para ver o quentpd
mantém como informação:Eu acho que o número em que você normalmente tem interesse é "deslocamento", esse é o número de segundos em que o relógio local está fora do relógio do servidor.
Como a
man
página parantpdc
estados do comando "peers":Então, claramente, o "deslocamento" é em segundos.
Parece que
ntpdc
foi descontinuado, substituído porntpq
.ntpq
possui um comando interativo "pares", que fornece "deslocamento" em milissegundos. Meu servidor Redhat possui ambosntpdc
entpq
, portanto, você precisará ter cuidado.fonte
ntp-wait
foi feito para esse problema.Cinco minutos com
man ntp-wait
e você deve estar em funcionamento ...fonte
Adicionei ao script @BillTHor bash também uma verificação do código de saída ntpdstat> 0:
[UPDATE] Como o script que usa a saída ntpq foi inútil para o deslocamento grande (mais de 4 dígitos do deslocamento), tentei uma nova versão usando apenas o ntpstat:
fonte
O deslocamento NTP pode ser obtido com o seguinte pipeline UNIX:
A contagem de pares NTP pode ser obtida com o seguinte pipeline UNIX:
Para compensação NTP , usamos:
Para a contagem de pares NTP , usamos:
Configuração de monitoramento NTP pronto para Zabbix (fonte: Joyent):
Plug-ins de monitoramento NTP prontos para Nagios:
check_ntp_offset:
check_ntp_peers:
Eu realmente deveria permitir que os limites crítico e de aviso nos scripts do Nagios fossem configuráveis com -w e -c. Eles não estão totalmente prontos para plugins sem isso. Mais orientações sobre isso em um tutorial aqui: http://www.kernel-panic.it/openbsd/nagios/nagios6.html
fonte
Alega-se que o Chrony lida com o seu caso de uso melhor do que o NTPd (ligar / desligar a rede e a máquina, suspender etc.). Vejo
http://fedoraproject.org/wiki/Features/ChronyDefaultNTP
RE, por que eu acho que o chronny é bom: veio pré-instalado na minha máquina fedora e nunca tive nenhum problema com ela (usei-a há anos). Eu nunca tive problemas com o ntpd no passado também, mas se você ler o link que forneci, há algumas informações sobre por que o chrony é melhor para nem sempre nas máquinas. Foi por isso que sugeri à operação para experimentar, pode ou não funcionar melhor para ele. Portanto, é apenas mais uma boa opção para tentar antes de entrar em muitos ajustes, otimização e pirataria do ntpd.
fonte
fonte
Igual à resposta anterior acima, mas com uma ligeira modificação, o comando anterior executará a instrução if para o mesmo número de deslocamentos, ou seja, se o deslocamento for 3, o NTP imprimirá dentro de 0,1 .... 3 vezes antes de fechar. Pode ser irritante se você tiver um servidor muito longe de sincronia. Provavelmente existe uma maneira de remover o loop for também ...
fonte