Est-il possible d'utiliser ntpdate derrière un proxy HTTP avec authentification ? Si ce n'est pas possible, existe-t-il de bonnes alternatives ?
Réponses
Trop de publicités?Élargir le champ d'action la réponse de carveone :
sudo date -s "$(wget -S "http://www.google.com/" 2>&1 | grep -E '^[[:space:]]*[dD]ate:' | sed 's/^[[:space:]]*[dD]ate:[[:space:]]*//' | head -1l | awk '{print $1, $3, $2, $5 ,"GMT", $4 }' | sed 's/,//')"
Cela semble être un cas clair pour tlsdate.
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 déjà vu autant de recommandations pour utiliser des données non nettoyées provenant d'Internet comme argument pour une invocation sudo.
Github : https://github.com/ioerror/tlsdate
One Liner
Variable d'environnement supposée http_proxy
est déjà réglé :
sudo date -s "$(curl -H'Cache-Control:no-cache' -sI google.com | grep '^Date:' | cut -d' ' -f3-6)Z"
nous pouvons d'abord vérifier la date et l'heure récupérées :
# 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)"
Notes
Au cas où, certaines options peuvent être nécessaires pour curl
:
-
curl -x $proxy
pour définir explicitement le serveur proxy à utiliser, lorsque l'option
http_proxy
La variable d'environnement n'est pas définie, la valeur par défaut est le protocolehttp
et le port1080
( manuel ). -
curl -H 'Cache-Control: no-cache'
de manière explicite désactiver la mise en cache surtout lorsqu'il est utilisé dans une tâche cron et/ou derrière un serveur proxy.
Forme alternative testée avec RHEL 6 qui utilise l'option '-u' pour la date au lieu d'ajouter le "Z" à la sortie :
sudo date -u --set="$(curl -H 'Cache-Control: no-cache' -sD - http://google.com |grep '^Date:' |cut -d' ' -f3-6)"
BTW, google.com
est préféré à www.google.com
car la première entraîne une 301
la réponse de redirection, qui est beaucoup plus petite ( 569
vs 20k+
caractères), mais il est toujours bon de l'utiliser.
Le service NTP utilise le protocole UDP pour synchroniser l'heure. Il se peut donc que le proxy HTTP/TCP ne fonctionne pas pour lui. Alternative à la réponse acceptée, il existe une bonne htpdate outil pour synchroniser le temps derrière un proxy.
Un exemple de tâche cron :
* 3 * * * /usr/bin/htpdate -s -P <PROXY_HOST>:<PROXY__PORT> www.linux.org www.freebsd.org
S'il s'agit uniquement d'un proxy HTTP, il utilise le port 80, donc la réponse de base est non à cette question spécifique. 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.
Il existe des programmes qui font du NTP sur HTTP. Je n'utilise pas Linux, mais celui-ci pourrait le faire :
http://www.rkeene.org/oss/htp/ (je ne suis toujours pas sûr que cela permette l'authentification).
Je n'ai pas pu en trouver un pour Windows, mais je vous en ferai part si j'en trouve un.
- Réponses précédentes
- Plus de réponses