Ntdate'i kimlik doğrulamalı bir HTTP proxy arkasında kullanmak mümkün müdür? Mümkün olmadığı takdirde, iyi alternatifler var mı?
Ntdate'i kimlik doğrulamalı bir HTTP proxy arkasında kullanmak mümkün müdür? Mümkün olmadığı takdirde, iyi alternatifler var mı?
Yanıtlar:
Bu tlsdate için net bir durum gibi görünüyor.
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.
İnternetten gelen sansızlaştırılmış verilerin bir sudo çağrısı argümanı olarak kullanılması için pek çok öneri gördüğümü sanmıyorum.
Üzerine Genişleyen carveone tarafından cevap :
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/,//')"
Ortam değişkeninin zaten ayarlanmışhttp_proxy
olduğunu varsayarak :
sudo date -s "$(curl -H'Cache-Control:no-cache' -sI google.com | grep '^Date:' | cut -d' ' -f3-6)Z"
önce alınan tarihi / saati doğrulayabiliriz:
# 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)"
Sadece durumda, bazı seçenekler için gerekli olabilir curl
:
curl -x $proxy
Proxy sunucusunu, http_proxy
ortam değişkeni ayarlanmadığında varsayılan olarak protokol http
ve bağlantı noktası 1080
( manuel ) olarak kullanmak üzere açıkça ayarlamak için .
curl -H 'Cache-Control: no-cache'
özellikle bir cron işinde ve / veya bir proxy sunucusunun arkasında kullanıldığında önbelleğe almayı açıkça devre dışı bırakmak için .
Çıkışa "Z" eklemek yerine, '-u' seçeneğini kullanan RHEL 6 ile test edilmiş alternatif form:
sudo date -u --set="$(curl -H 'Cache-Control: no-cache' -sD - http://google.com |grep '^Date:' |cut -d' ' -f3-6)"
BTW, google.com
tercih edilir www.google.com
çünkü eski 301
, çok daha küçük ( karakterlere 569
karşı 20k+
) ancak yine de kullanımı iyi olan bir yönlendirme yanıtı verir.
sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
wget
sürümü, kişisel olarak kullanmayı tercih etmeme rağmen curl
.
Tamamen bir HTTP proxy ise, 80 numaralı bağlantı noktasını kullanıyor, bu nedenle temel cevap buna özel değil. NTP, 123 numaralı UDP bağlantı noktasını kullanır. Daha genel bir proxy sunucusuysa, tüm bağlantı noktalarına hizmet eder, o zaman belki.
HTTP üzerinden NTP yapan bazı programlar var. Linux kullanmıyorum, ancak bunu yapabilir:
http://www.rkeene.org/oss/htp/ (bunun da kimlik doğrulaması yapıp yapmadığından emin değilsiniz).
Windows için bir tane bulamadım, ancak yaparsam geri göndereceğim.
Http proxy sunucusunun ardındaki insanlar için hızlı ve kirli bir çözüm:
Konumum GMT + 4, şu anki saati timeapi sunucusundan url ile kontrol edebilirim: http://www.timeapi.org/utc/in+four+hours , daha fazla bilgi için lütfen bulunduğunuz yerin web sitesini kontrol edin.
Tarih ve saati ayarlamak için:
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 " " )
İlk 'zaman' komutu yüksek bir değer bildirirse komutu tekrarlayabilirsiniz ...
sudo date -s "$(curl -s http://www.timeapi.org/utc/now)"
İşletim sisteminiz doğru ayarlanmışsa saat dilimine dikkat etmeniz gerekmez. Linux dizede verilen zaman dilimini tanır ve sistem saatini uygun şekilde ayarlar.
NTP servisi, zamanı senkronize etmek için UDP protokolünü kullanıyor. Bu yüzden HTTP / TCP proxy bunun için çalışmayabilir. Kabul edilen cevaba alternatif olarak, vekilin ardındaki zamanı senkronize etmek için iyi bir htpdate aracı var.
Bir cron işi örneği:
* 3 * * * /usr/bin/htpdate -s -P <PROXY_HOST>:<PROXY__PORT> www.linux.org www.freebsd.org
Http üzerinden ntp'den bahsedilse de, hiç kimsenin http://www.vervest.org/htp/ adresindehtpdate
bulunan çok küçük bir yardımcı programdan bahsetmediğine şaşırdım . Alternatiflerin aksine, Debian'ın ve Ubuntu'nun varsayılan depolarının bir parçasıdır ve kullanılarak yüklenebilir .htpdate
apt-get
Daemon modunda sıradan bir komut olarak veya sessizce çalıştırılabilir.
http_proxy
Ortam değişkeninin ayarlandığı varsayılarak :
wget -S --spider "http://www.google.com/" 2>&1 | grep -E '^[[:space:]]*[dD]ate:' | sed 's/^[[:space:]]*[dD]ate:[[:space:]]*//'
Ya da kullan curl -I --proxy="..." "http://www.google.com/"
Ne de olsa, Google’ın sitesi zaman ayarlamamışsa umut yoktur.
Https://superuser.com/a/509620/362156 adresinde genişletiliyor
Farz edelim ki Berlin’de (Almanya).
O zaman bunu kullan:
sudo TZ=Europe/Berlin date -s "$(TZ=Europe/Berlin date --date='TZ="UTC" '"$(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 , $6, $4 }' | sed 's/,//')")"
@Ryenus' mükemmel cevabın tam çalışma öncesi pişmiş uygulanması için, kontrol set_system_clock_from_google.sh .