จะทราบเวลาปัจจุบันจากอินเทอร์เน็ตจาก command line ใน Linux ได้อย่างไร?
ตัวอย่างเช่นกับntpq
โปรแกรม?
หมายเหตุ: ไม่ได้มาจากคอมพิวเตอร์หรือนาฬิการะบบปฏิบัติการ แต่มาจากอินเทอร์เน็ต?
หมายเหตุ: ฉันไม่ต้องการเปลี่ยนหรือซิงค์เวลา เพิ่งรู้
จะทราบเวลาปัจจุบันจากอินเทอร์เน็ตจาก command line ใน Linux ได้อย่างไร?
ตัวอย่างเช่นกับntpq
โปรแกรม?
หมายเหตุ: ไม่ได้มาจากคอมพิวเตอร์หรือนาฬิการะบบปฏิบัติการ แต่มาจากอินเทอร์เน็ต?
หมายเหตุ: ฉันไม่ต้องการเปลี่ยนหรือซิงค์เวลา เพิ่งรู้
คำตอบ:
หากคุณใช้ bash บรรทัดต่อไปนี้จะทำงาน
$ cat </dev/tcp/time.nist.gov/13
56525 13-08-21 23:07:09 50 0 0 55.6 UTC(NIST) *
มันใช้ประโยชน์จากความสามารถเครือข่ายในตัวของเชลล์ bash หากคุณใช้ POSIX เชลล์หรือเชลล์อื่น ๆ คุณสามารถใช้เช่นnetcat
$ nc time.nist.gov 13
56525 13-08-21 23:07:09 50 0 0 55.6 UTC(NIST) *
คำสั่งทั้งคู่สอบถามเซิร์ฟเวอร์ตัวจับเวลาบนพอร์ต TCP 13 ของสถาบันมาตรฐานและเทคโนโลยีแห่งชาติและส่งออกข้อมูลที่ได้รับเมื่อ stdout
¹ แก้ไข:จากหน้า Bash man: Bash จัดการชื่อไฟล์หลายชื่อเป็นพิเศษเมื่อใช้ในการเปลี่ยนเส้นทางดังที่อธิบายไว้ในตารางต่อไปนี้:
/dev/tcp/host/port
หากโฮสต์เป็นชื่อโฮสต์หรือที่อยู่อินเทอร์เน็ตที่ถูกต้องและพอร์ตเป็นหมายเลขพอร์ตจำนวนเต็มหรือ
ชื่อบริการ bash จะพยายามเปิดการเชื่อมต่อ TCP ไปยังซ็อกเก็ตที่เกี่ยวข้อง
/dev/udp/host/port
หากโฮสต์เป็นชื่อโฮสต์หรือที่อยู่อินเทอร์เน็ตที่ถูกต้องและพอร์ตเป็นหมายเลขพอร์ตจำนวนเต็มหรือ
ชื่อบริการ bash จะพยายามเปิดการเชื่อมต่อ UDP กับซ็อกเก็ตที่เกี่ยวข้อง
</dev/tcp/
รูปแบบ?
curl -G --data-urlencode "format=%D-%T\n" http://www.timeapi.org/cet/now?
มีบริการ NTPหลายบริการต่อ distro
หากคุณต้องการทำClocks ครั้งเดียว :
date -s "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"
ตั้งเวลาระบบเป็นฮาร์ดแวร์นาฬิกาเรียลไทม์
hwclock -r --utc
hwclock -w --utc
hwclock -r --utc
(หมายเหตุ: สิ่งนี้เกิดขึ้นเพื่อทำงานได้ดีกับ Google เพราะพวกเขามีทั้งห่วงโซ่ทั้งหมด)
หากคุณต้องการดูเวลาที่เซิร์ฟเวอร์ที่ใกล้ที่สุดของ Google ส่งให้:
date -d "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"
ntpdate
คำสั่งสามารถทำเช่นนี้กับ-q
ธง:
$ 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
จากman ntpdate
:
-q Query only - don't set the clock.
คุณสามารถรับเวลาผ่านอินเทอร์เน็ตโดยใช้ HTTP โดยใช้HTPซึ่งมีอยู่ในหลายระบบhtpdate
ซึ่งโดยปกติจะมีความแม่นยำเพียงวินาทีที่ใกล้ที่สุดหรือคุณสามารถขอรับได้โดยใช้ TLS tlsdate
ซึ่งสามารถให้ความแม่นยำที่ดีกว่า:
tlsdate -nV google.com
นอกจากนี้เนื่องจาก ntpdate กำลังเลิกใช้คุณสามารถใช้sntp
(ติดตั้งโดยค่าเริ่มต้นใน MacOS และมาเป็นส่วนหนึ่งของการกระจาย ntp) เพื่อให้ได้วันที่ที่แม่นยำยิ่งขึ้น:
sntp pool.ntp.org