Comment régler l'heure et la date à partir d'Internet?

35

Comment récupérer la date sur Internet et régler l'horloge de mon ordinateur à partir de la ligne de commande?

Mohsen
la source
3
Je ne comprends pas les votes négatifs. Des questions simples sont ce qui rend une communauté puissante. Par exemple, voyez ceci
Mohsen le
3
Lorsque je passe la souris au-dessus de la flèche vers le bas d'une question, je vois: "Cette question ne montre aucun effort de recherche; elle n'est ni claire ni utile". Je serais tenté de revenir sur votre question en fonction du premier (pas d'indication de ce que vous avez trouvé), du second (pas d'indication sur la plateforme spécifique sur laquelle vous travaillez, et pourquoi cela doit être en ligne de commande (au lieu du démon de temps habituel) ) et le troisième (la plupart des utilisateurs * nix auront un démon temporel installé par défaut).
Anthon
+1 Je ne comprends pas non plus les votes négatifs, simplement parce que c'est quelque chose qui m'a déjà énervé plusieurs fois et qu'il semble impossible de trouver quelque chose de concis et d'utile sur ce thème spécifique.
l0b0
@Mohsen Je n'ai pas voté vers le bas, mais la différence par rapport à la question que vous avez posée est qu'il n'y a pas switchde rubis alors que vous pouvez définir directement la date via date -s(comme indiqué dans la page de manuel), ou utiliser l'une des commandes décrites ci-dessous ...
Ulrich Dangel
1
@Anthon, je ne suis pas d'accord: cette question concerne un petit appareil avec BusyBox, qui rend le conseil générique «utiliser NTP» pas nécessairement applicable
Gilles 'SO, arrête de faire le mal'

Réponses:

29

Vous pouvez utiliser :

sudo dpkg-reconfigure tzdata

pour configurer votre fuseau horaire.

Pour mettre à jour l'heure et la date à partir d'Internet, utilisez ce qui suit:

Installer

Si ntpd n'est pas installé, utilisez l'une des commandes suivantes pour installer ntpd:

  • Pour RPM basé:

    yum install ntp 
    
  • Pour Debian:

    sudo apt-get install ntp
    

Configuration

Vous devez au moins définir le paramètre suivant dans /etc/ntp.conf fichier de configuration: server

Par exemple, ouvrez le fichier /etc/ntp.conf en utilisant l'éditeur de texte vi:

  # vi /etc/ntp.conf

Recherchez le paramètre du serveur et définissez-le comme suit:

  server pool.ntp.org

Enregistrez le fichier et redémarrez le service ntpd:

  # /etc/init.d/ntpd start

Vous pouvez synchroniser immédiatement l'horloge système sur un serveur NTP à l'aide de la commande suivante:

  # ntpdate pool.ntp.org

* Pour régler l'heure et la date manuellement, utilisez la syntaxe suivante:

 date --set="STRING"

Par exemple, définissez les nouvelles données sur 2 oct 2006 18:00:00, tapez la commande suivante en tant qu'utilisateur root:

# date -s "2 OCT 2006 18:00:00"

OU

# date --set="2 OCT 2006 18:00:00"

Vous pouvez également simplifier le format en utilisant la syntaxe suivante:

# date +%Y%m%d -s "20081128"

Pour définir l'heure, utilisez la syntaxe suivante:

# date +%T -s "10:13:13"

Où,

10: heure (hh) 13: minute (mm) 13: seconde (ss)

Utilisez l'équivalent pour les paramètres régionaux de% p, soit AM ou PM, entrez:

# date +%T%p -s "6:10:30AM"

# date +%T%p -s "12:10:30PM"
tusharmakkar08
la source
Bien que les informations relatives à la date semblent toutes valides, elles ne prennent en compte nulle part l'exigence from the internetdu titre du PO.
Anthon
Je crois que le paquet tzdata (données de fuseau horaire) synchronise les données à partir d'Internet uniquement. Corrigez-moi si je me trompe .
tusharmakkar08
3
tzdata contient des informations sur les fuseaux horaires et l'heure d'été (début, fin, époque) et non sur la date et l'heure réelles . Bien sûr, il est pratique de savoir comment se rendre à votre heure locale en fonction de la connaissance de votre fuseau horaire et de l’heure UTC, mais vous devez tout de même extraire ce dernier à partir d’Internet.
Anthon
Vous avez tort. les données de fuseau horaire doivent être mises à jour (car des changements se produisent tout le temps) MAIS elles ne se mettent pas à jour automatiquement depuis Internet, ni ne définissent l'heure à partir d'Internet.
Ulrich Dangel
@ Anthony: J'ai modifié ma réponse en conséquence. Merci.
tusharmakkar08
23

Un petit code que j'ai trouvé pour mettre à jour votre heure au cas où vous ne voudriez rien installer juste pour mettre à jour la date. :)

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
Prashant Kabade
la source
1
J'utilise google.inpour obtenir l'heure actuelle de mon fuseau horaire (INDE).
Dilawar
Notez la fin Zqui indique que l’heure est donnée en fuseau horaire zoulou. Aucune manipulation particulière du fuseau horaire n’est donc nécessaire si le fuseau horaire de l’ordinateur est défini correctement.
user202729
10

J'utilise ceci:

sudo ntpd -qg; sudo hwclock -w

Commencez par indiquer à ntpd de régler simplement l'heure et d'arrêter ensuite avec -q. De plus, si votre horloge a une grosse erreur, nous devons dire à ntpd de s’ajuster également dans ce cas avec -g. Enfin, écrivez l'horloge sur le matériel pour conserver les modifications lors du redémarrage avec hwclock -w (-w pour définir l'attribut hardwareclock sur l'heure système actuelle, il y a une différence).

Silverrocker
la source
1
J'ai tendance à le faire avec un "&&" au lieu du point-virgule, de sorte que si la première commande échoue (par exemple, la connectivité réseau est en panne), la deuxième commande est court-circuitée
Theophrastus,
7

Utilisez ntpdate, ntpd ou Chrony pour vous connecter à un serveur NTP.

Ignacio Vazquez-Abrams
la source
5

Certaines distributions sont expédiées à cette fin. Utilisation de base:

# just query
bash-4.2$ rdate pool.ntp.org
rdate: [pool.ntp.org]   Wed Jun 12 11:05:40 2013

# set system time
bash-4.2$ rdate -s pool.ntp.org
homme au travail
la source
Bien
pool.ntp.orgrefuse maintenant les connexions de rdate. time.nist.govtravaux. De plus, une fois que vous avez défini l'heure système, vous devez également définir l'horloge matérielle en l'exécutant hwclock -wpour la régler sur l'heure système. Vous pouvez alors vérifier qu'elle est correcte en exécutanthwclock -r
MatthewLee
5

Après quelques recherches, j'ai fini avec ça. Je l'ai aussi appliqué à mon propre serveur:

sudo apt-get install ntp
sudo dpkg-reconfigure ntp
ntpq -p

Si la dernière commande affiche une liste valide de serveurs, vous pouvez continuer. La commande exécutera un ensemble complexe d’algorithmes qui permettront, entre autres, d’observer la dérive de votre horloge et de les compenser. Vous vous retrouverez avec une horloge assez précise même si vous perdez la connexion aux serveurs NTP. Cependant, la commande nécessite quelques minutes pour démarrer.

Source: ici et ici .

Tubbles
la source
0

Pour trouver des "pairs" (hôtes que vous pouvez interroger), vous pouvez utiliser ntpq -p.

Si un service NTP est déjà en cours d'exécution, vous devez l'arrêter avant de le mettre à jour manuellement, par exemple en utilisant sudo service ntp stop.

Vous pouvez maintenant interroger un pair, par exemple en utilisant sudo ntpdate "peer".

l0b0
la source
0

Utilisation de l’ outil rdate suggéré dans la réponse de manatwork , mais avec le protocole SNTP -net les -4options IPv4 sur:

# just print synced time, not set
rdate -n -4 -p time-a.nist.gov

# print and set synced time
sudo rdate -n -4 time-a.nist.gov

L'outil peut être installé sur Debian de cette façon:

sudo apt-get install rdate
Sergent
la source
0

En plus de la réponse de Tushar , je devais également utiliser apt-get install ntpdateUbuntu 14.04.

Publier en tant que réponse car la réputation ne suffit pas pour commenter.

pylipp
la source
0

Je recherchais également un moyen non ntp / ntpd de réinitialiser périodiquement l'horloge. J'ai aimé l'analyse de l'en-tête de google.com, mais j'ai constaté que cela ne fonctionnait pas sur Ubuntu. Je pense que cela fonctionnera également sur un Raspberry Pi.

sudo date +"%d %b %Y %T %Z" -s "$(wget -qSO- --max-redirect=0 http://google.com 2>&1 | grep '^  Date:' | cut -d' ' -f 5-)"

Également une alternative utilisant curl au lieu de wget.

sudo date +"%d %b %Y %T %Z" -s "$(curl -s --head http://google.com | grep '^Date:' | cut -d' ' -f 3-)"

Testé sur PI avec réseau cellulaire et les résultats sont similaires:

Using host & wget -- RCV: 1324 bytes SND: 581 bytes
Using host & curl -- RCV: 1318 bytes SND: 567 bytes

Remarque J'utilise host pour résoudre google.com en une adresse IP afin de ne pouvoir ouvrir que cette adresse IP pendant la durée de cette commande avec iptables.

Ron B
la source