Linux dans mon cas (ne pense pas que cela compte beaucoup).
Ton van den Heuvel
Cela importait seulement parce qu'il était plus difficile de trouver quoi que ce soit à distance pour Windows. La recherche de clé que j'ai utilisée était "NTP over HTTP", au cas où vous voudriez chercher plus loin.
KCotreau
3
Si vous êtes derrière un proxy HTTP, cela signifie probablement que vous êtes dans une entreprise et que cette entreprise peut fournir ses propres services NTP.
Tristan
Réponses:
29
Cela semble être un cas clair pour cette date.
tlsdate: secure parasitic rdate replacement
tlsdate sets the local clock by securely connecting with TLS to remote
servers and extracting the remote time out of the secure handshake. Unlike
ntpdate, tlsdate uses TCP, for instance connecting to a remote HTTPS or TLS
enabled service, and provides some protection against adversaries that try
to feed you malicious time information.
Je ne pense pas avoir jamais vu autant de recommandations d'utiliser des données non normalisées provenant d'Internet comme argument d'une invocation sudo.
Je n'ai pas réussi à le faire fonctionner - avec chaque combinaison, cela génère des erreurs concernant les faux tickers. wget réponse ci-dessous fonctionne.
Bonjour Angel
Ont travaillé sur une machine Centos6.9 mais pas de joie. Cela semble plus sain que d’autres recommandations, mais il n’est pas anodin de le faire fonctionner ...
Attention, cela créerait le fichier 'index.html *' dans le répertoire actuel.
ryenus
Notez que la version courte doit utiliser www.google.com puisque google.fr y redirige maintenant via la date 301 avec la date "bloquée"
Hansi
Lorsque j'ai fait ce commentaire, la réponse à cette commande a renvoyé un jour obsolète quatre jours plus tard.
Hansi
@ryenus C'est une excellente réponse. Cela fonctionne parfaitement bien. Cependant, j'ai un problème lorsque je mets cette commande dans un travail crontab. La partie heure de la date est créée à 00:00:00 à chaque exécution de ce travail. J'ai essayé de courir dans un script shell. Même résultat.
huzeyfe
@huzeyfe, voudriez-vous s'il vous plaît vérifier si passer proxy par curl fonctionne?
Ryenus
21
Bon mot
En supposant que la variable d’environnement http_proxysoit déjà définie :
nous pouvons d'abord vérifier la date / heure récupérée:
# local date/time
date -d "$(curl -HCache-Control:no-cache -sI google.com | grep '^Date:' | cut -d' ' -f3-6)Z"# or UTC date/time
date -ud "$(curl -HCache-Control:no-cache -sI google.com | grep '^Date:' | cut -d' ' -f3-6)"
Remarques
Juste au cas où, certaines options pourraient être nécessaires pour curl:
curl -x $proxy
pour définir explicitement le serveur proxy à utiliser, lorsque la http_proxyvariable d'environnement n'est pas définie, par défaut sur protocole httpet port 1080
( manuel ).
curl -H 'Cache-Control: no-cache'
désactiver explicitement la mise en cache , en particulier lorsqu’il est utilisé dans un travail cron et / ou derrière un serveur proxy.
Autre forme testée avec RHEL 6 qui utilise l’option '-u' pour dater au lieu d’ajouter le «Z» à la sortie:
BTW, google.comest préférable à www.google.com, car le premier entraîne une 301réponse de redirection, qui est beaucoup plus petite ( 569vs 20k+caractères), mais toujours bon à utiliser.
^ ci-dessus est la wgetversion, bien que je préfère personnellement l’utiliser curl.
Ryenus
2
Passer des données non normalisées d’Internet en tant que variable à une invocation sudo? Est-ce 1999?
dfc
2
Ou utilisez simplement tlsdate et ne vous fiez pas à de mauvais problèmes comme celui-ci.
dfc
oui, cela fonctionne avec les mandataires. J'ai lu la question aussi.
dfc
5
S'il s'agit uniquement d'un proxy HTTP, le port 80 est utilisé. La réponse de base est donc non à cette question. NTP utilise le port UDP 123. S'il s'agit d'un serveur proxy plus générique, desservant tous les ports, alors peut-être.
Certains programmes utilisent NTP sur HTTP. Je n'utilise pas Linux, mais celui-ci pourrait le faire:
Le lien NTP sur HTTP est inspirant, merci pour cela!
Ton van den Heuvel
5
Une solution rapide et sale pour les personnes derrière un serveur proxy http:
Mon emplacement est GMT + 4, je peux consulter l’heure actuelle sur le serveur timeapi à l’ adresse http://www.timeapi.org/utc/in+four+hours . Pour plus d’informations , veuillez consulter le site Web correspondant à votre emplacement.
Pour configurer la date et l'heure, je fais:
time sudo date $(wget -O - "http://www.timeapi.org/utc/in+four+hours" 2>/dev/null | sed s/[-T:+]/\ /g | awk '{print $2,$3,$4,$5,".",$6}' | tr -d " " )
Vous pouvez répéter la commande si la commande initiale "time" indique une valeur élevée ...
Merci pour le conseil, je l'ai encore plus facile: sudo date -s "$(curl -s http://www.timeapi.org/utc/now)"vous n'avez pas besoin de faire attention au fuseau horaire si votre système d'exploitation est configuré correctement. Linux reconnaît le fuseau horaire fourni dans la chaîne et définit l'heure du système de manière appropriée.
Melebius
2
Le service NTP utilise le protocole UDP pour synchroniser l'heure. Donc, le proxy HTTP / TCP peut ne pas fonctionner pour cela. Alternative à la réponse acceptée, il existe un bon outil htpdate pour synchroniser le temps derrière le proxy.
Bien que ntp over http ait été mentionné, je suis surpris que personne ne mentionne le petit utilitaire astucieux htpdatedisponible sur http://www.vervest.org/htp/ . Contrairement aux alternatives, htpdatefait partie des dépôts par défaut de Debian et Ubuntu et peut être installé avec apt-get.
Il peut être exécuté en tant que commande ordinaire ou en mode démon en mode silencieux.
Réponses:
Cela semble être un cas clair pour cette date.
Je ne pense pas avoir jamais vu autant de recommandations d'utiliser des données non normalisées provenant d'Internet comme argument d'une invocation sudo.
Github: https://github.com/ioerror/tlsdate
la source
Développer la réponse par Carveone :
la source
Bon mot
En supposant que la variable d’environnement
http_proxy
soit déjà définie :nous pouvons d'abord vérifier la date / heure récupérée:
Remarques
Juste au cas où, certaines options pourraient être nécessaires pour
curl
:curl -x $proxy
pour définir explicitement le serveur proxy à utiliser, lorsque la
http_proxy
variable d'environnement n'est pas définie, par défaut sur protocolehttp
et port1080
( manuel ).curl -H 'Cache-Control: no-cache'
désactiver explicitement la mise en cache , en particulier lorsqu’il est utilisé dans un travail cron et / ou derrière un serveur proxy.
Autre forme testée avec RHEL 6 qui utilise l’option '-u' pour dater au lieu d’ajouter le «Z» à la sortie:
BTW,
google.com
est préférable àwww.google.com
, car le premier entraîne une301
réponse de redirection, qui est beaucoup plus petite (569
vs20k+
caractères), mais toujours bon à utiliser.la source
sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
wget
version, bien que je préfère personnellement l’utilisercurl
.S'il s'agit uniquement d'un proxy HTTP, le port 80 est utilisé. La réponse de base est donc non à cette question. NTP utilise le port UDP 123. S'il s'agit d'un serveur proxy plus générique, desservant tous les ports, alors peut-être.
Certains programmes utilisent NTP sur HTTP. Je n'utilise pas Linux, mais celui-ci pourrait le faire:
http://www.rkeene.org/oss/htp/ (toujours pas sûr si cela fera l'authentification non plus).
Je ne pouvais pas en trouver un pour Windows, mais je le posterais si je le faisais.
la source
Une solution rapide et sale pour les personnes derrière un serveur proxy http:
Mon emplacement est GMT + 4, je peux consulter l’heure actuelle sur le serveur timeapi à l’ adresse http://www.timeapi.org/utc/in+four+hours . Pour plus d’informations , veuillez consulter le site Web correspondant à votre emplacement.
Pour configurer la date et l'heure, je fais:
Vous pouvez répéter la commande si la commande initiale "time" indique une valeur élevée ...
la source
sudo date -s "$(curl -s http://www.timeapi.org/utc/now)"
vous n'avez pas besoin de faire attention au fuseau horaire si votre système d'exploitation est configuré correctement. Linux reconnaît le fuseau horaire fourni dans la chaîne et définit l'heure du système de manière appropriée.Le service NTP utilise le protocole UDP pour synchroniser l'heure. Donc, le proxy HTTP / TCP peut ne pas fonctionner pour cela. Alternative à la réponse acceptée, il existe un bon outil htpdate pour synchroniser le temps derrière le proxy.
Un exemple de travail cron:
la source
Bien que ntp over http ait été mentionné, je suis surpris que personne ne mentionne le petit utilitaire astucieux
htpdate
disponible sur http://www.vervest.org/htp/ . Contrairement aux alternatives,htpdate
fait partie des dépôts par défaut de Debian et Ubuntu et peut être installé avecapt-get
.Il peut être exécuté en tant que commande ordinaire ou en mode démon en mode silencieux.
la source
En supposant que la
http_proxy
variable d'environnement est définie:Ou utiliser
curl -I --proxy="..." "http://www.google.com/"
Après tout, si le temps imparti au site de Google n’est pas défini, il n’ya plus d’espoir.
la source
Étendre sur https://superuser.com/a/509620/362156
Supposons que vous êtes à Berlin (Allemagne).
Alors utilisez ceci:
la source
Pour une implémentation déjà prête à l'emploi de l'excellente réponse de @ryenus, consultez set_system_clock_from_google.sh .
la source