Linux'ta internetten komut satırından şimdiki zamanı nasıl öğrenirim?
Mesela ntpq
programla mı?
Not: bilgisayardan veya işletim sistemi saatinden değil, internetten?
Not: DEĞİŞTİRMEK veya SYNC saatini istemiyorum. Sadece onu biliyorum.
Linux'ta internetten komut satırından şimdiki zamanı nasıl öğrenirim?
Mesela ntpq
programla mı?
Not: bilgisayardan veya işletim sistemi saatinden değil, internetten?
Not: DEĞİŞTİRMEK veya SYNC saatini istemiyorum. Sadece onu biliyorum.
Yanıtlar:
Bash kullanıyorsanız, aşağıdaki satır işi yapacak
$ cat </dev/tcp/time.nist.gov/13
56525 13-08-21 23:07:09 50 0 0 55.6 UTC(NIST) *
Bash kabuğunun yerleşik ağ yeteneklerini¹ güçlendirir. POSIX kabuğu veya başka bir kabuk kullanıyorsanız, örneğin netcat kullanabilirsiniz .
$ nc time.nist.gov 13
56525 13-08-21 23:07:09 50 0 0 55.6 UTC(NIST) *
Her iki komut da, zamanlayıcı sunucusunu Ulusal Standartlar ve Teknoloji Enstitüsü'nün 13 numaralı TCP bağlantı noktasında sorgular ve alınan verileri stdout'ta verir.
¹ DÜZENLEME: Gönderen Bash adam sayfası: Bash aşağıdaki tabloda açıklandığı gibi onlar, yönlendirmeler kullanıldığında özellikle birkaç dosya ele alır:
/dev/tcp/host/port
Ana bilgisayar geçerli bir ana bilgisayar adı veya Internet adresiyse ve bağlantı noktası bir tam sayı bağlantı noktası numarası veya
hizmet adıysa, bash ilgili sokete bir TCP bağlantısı açmaya çalışır.
/dev/udp/host/port
Ana bilgisayar geçerli bir ana bilgisayar adı veya Internet adresiyse ve bağlantı noktası bir tam sayı bağlantı noktası numarası veya
hizmet adıysa, bash ilgili sokete bir UDP bağlantısı açmaya çalışır.
</dev/tcp/
formatı?
curl -G --data-urlencode "format=%D-%T\n" http://www.timeapi.org/cet/now?
Dağıtım başına birkaç NTP servisi var.
Tek seferlik bir saat yapmak istiyorsanız :
date -s "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"
Sistem saatini donanıma Gerçek Zamanlı Saat olarak ayarlayın
hwclock -r --utc
hwclock -w --utc
hwclock -r --utc
(Not: Bu, Google’la iyi çalışır, çünkü heryerde başkaları da vardır)
Google’ın en yakın sunucusunun saat kaçta gönderildiğini görmek istiyorsanız:
date -d "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"
ntpdate
Komut ile yapabilirsiniz -q
bayrak:
$ ntpdate -q 1.debian.pool.ntp.org
server 88.191.120.99, stratum 3, offset -0.015076, delay 0.06604
server 88.191.235.218, stratum 2, offset -0.000676, delay 0.06592
server 188.165.240.21, stratum 3, offset 0.001191, delay 0.07005
server 91.121.34.166, stratum 2, offset 0.000565, delay 0.06998
22 Aug 00:56:21 ntpdate[31373]: adjust time server 88.191.235.218 offset -0.000676 sec
Kimden man ntpdate
:
-q Query only - don't set the clock.
Ayrıca, genellikle yalnızca en yakın saniyeye doğrulukta olan birçok sistemde bulunan HTP kullanarak HTTP kullanarak İnternet üzerinden zaman elde edebilir htpdate
veya tlsdate
daha iyi doğruluk sağlayabilen TLS kullanarak elde edebilirsiniz:
tlsdate -nV google.com
Ayrıca ntpdate kullanımdan kaldırıldığından sntp
, tarihi daha doğru bir şekilde elde etmek için (varsayılan olarak MacOS'ta yüklü ve ntp dağıtımlarının bir parçası olarak gelir) kullanabilirsiniz:
sntp pool.ntp.org