2012-05-16 13:22:14 +0000 2012-05-16 13:22:14 +0000
66
66

Como posso verificar a configuração actual de um sistema NTP?

Preciso de verificar a configuração actual do NTP em alguns sistemas Windows. Idealmente, gostaria de poder fazer isto através de linha de comando em vez de navegar pelos ecrãs de configuração.

(estou a trabalhar em várias versões de SO diferentes, e os ecrãs de configuração tendem a não estar sempre no mesmo sítio entre versões)

Espero encontrar um comando rápido e memorável que possa simplesmente introduzir numa consola CMD para obter o resultado. No entanto, um ficheiro batch que eu possa carregar comigo também serve.

Especificamente, preciso do seguinte:

  • Mostrar se o sistema está ou não configurado para receber tempo de um servidor NTP.
  • Mostrar o(s) servidor(es) NTP do(s) qual(is) o sistema está a receber tempo.
  • Mostrar a hora da última sincronização.
  • Mostrar a hora actual do sistema.

Que comando(s) seria(ão) necessário(s) para atingir estes resultados?

  • Procurar uma solução que seja compatível com o Windows XP, 7, Server 2003, e Server 2008.

Respostas (6)

83
83
83
2012-05-16 14:39:48 +0000

Na linha de comando, o tipo

w32tm /query /configuration
w32tm /query /status
Time /T

w32tm /query /configuration dá-lhe a configuração que configurou.

w32tm /query /status dá-lhe informações como:

  • stratum
  • indicador de salto
  • precisão
  • última sincronização
  • servidor NTP
  • intervalo de sondagem

time /T dá-lhe o tempo actual do sistema.

Nota: w32tm /query foi disponibilizado pela primeira vez nas versões Windows Time client do Windows Vista, e Windows Server 2008. Ver Windows Time Service Tools and Settings

17
17
17
2016-07-11 22:30:57 +0000

Isto responde à sua última pergunta:

Abra um prompt de comando e digite exatamente:

w32tm /stripchart /computer:NTPServerNameOrIP /dataonly /samples:x (quantos retornos você quer)

Ele retorna o tempo e a diferença para o tempo do servidor NTP. Se devolve tempo, erro: 0x80072746 então esse não é o seu servidor NTP.

Um exemplo de um comando está abaixo:

8
8
8
2015-03-13 22:33:22 +0000

Eu tentei:

w32tm /query /status

Eu consegui:

The command /query is unknown.

Numa máquina diferente, eu consegui:

The following error occurred: The service has not been started. (0x80070426)

Depois eu tentei:

reg QUERY [\machine\]HKLM\SYSTEM\CurrentControlSet\Services\W32Time

Depois eu tentei:

ERROR: The system was unable to find the specified registry key or value.

Eu recebi:

net time /querysntp

Numa outra máquina, recebi a página de ajuda, dizendo também:

This computer is not currently configured to use a specific SNTP server.

Então, basicamente, o serviço não estava a funcionar. Seguindo estas instruções, eu fiz:

The /QUERYSNTP and /SETSNTP options have been deprecated. Please use w32tm.exe to configure the Windows Time Service.

Finalmente, todas as instruções acima funcionariam. (nota: se o net start falhar, ver abaixo) Então eu só precisava de configurar o meu ntp… Fi-lo com:

w32tm /unregister
w32tm /unregister
w32tm /register
net start w32time

seguindo instruções de aqui , mas talvez pudesse ter sido tão fácil como:

w32tm /config /manualpeerlist:10.0.0.5 /syncfromflags:manual /reliable:yes /update

como instruído aqui . (10.0.0.5 sendo o meu servidor NTP local). Se não estiver a usar um servidor NTP local, pode usar o genérico:

net time /setsntp:10.0.0.5

Finalmente, pode precisar de fazer o seguinte, que não foi necessário para mim:

w32tm /config /manualpeerlist:pool.ntp.org /syncfromflags:manual /reliable:yes /update

NOTA: se o net start w32time falhar com o erro 1290 (O serviço começa a falhar uma vez que um ou mais serviços no mesmo processo têm uma configuração de tipo SID incompatível) então siga os passos aqui :

w32tm /config /update
w32tm /resync /rediscover

Então siga como acima.


NOTA 2: se o serviço NTP não iniciar automaticamente no reboot, pode ser devido às suas configurações de arranque, como descrito aqui : dependendo das suas janelas, pode ser configurado para iniciar apenas quando entrar num domínio. Pode verificar com:

w32tm /unregister
w32tm /register
sc config w32time type= own
net start w32time

Se estiver configurado para iniciar quando entrar num domínio, e não tiver um domínio configurado na sua máquina, não irá iniciar o serviço e definir a hora. Provavelmente não entra num domínio porque não quer que o faça. Em todo o caso, basta mudar qual o gatilho que o inicia. Por exemplo, para arrancar quando a máquina tem rede (e portanto consegue aceder ao servidor), faça:

sc qtriggerinfo w32time
5
5
5
2016-03-01 11:37:26 +0000

Utilização:

net stop w32time
w32tm /config /syncfromflags:manual /manualpeerlist:"0.it.pool.ntp.org 1.it.pool.ntp.org 2.it.pool.ntp.org 3.it.pool.ntp.org"
net start w32time
w32tm /config /update
w32tm /resync /rediscover

Um ficheiro de amostra .bat está em https://gist.github.com/thedom85/dbeb58627adfb3d5c3af .

Também recomendo este programa: http://www.timesynctool.com/

3
3
3
2012-05-16 14:10:42 +0000

A partir da linha de comando pode obter a informação assim:

reg QUERY [\machine\]HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters
reg QUERY [\machine\]HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config

Parece que isso deve ser suficiente pelo menos para ir nessa direcção, ou seja, se eu entendi a sua pergunta. AFAIK, o comando ‘reg’ funciona em todas estas diferentes plataformas, desde que tenha os serviços certos a funcionar.

2
2
2
2012-05-16 14:25:34 +0000

Dê uma olhada na ferramenta de linha de comando w32tm. Ela pode definir e consultar a configuração e reportar um gráfico de tempo com outro computador.