लिनक्स में कमांड लाइन से इंटरनेट से वर्तमान समय कैसे पता करें?


26

लिनक्स में कमांड लाइन से इंटरनेट से वर्तमान समय कैसे पता करें?

उदाहरण के लिए, ntpqकार्यक्रम के साथ ?

नोट: कंप्यूटर या ऑपरेटिंग सिस्टम घड़ी से नहीं, बल्कि इंटरनेट से?

नोट: मैं CHANGE या SYNC समय पर नहीं जाना चाहता। बस पता है।


जवाबों:


30

यदि आप bash का उपयोग करते हैं तो निम्नलिखित लाइन काम करेगी

$ cat </dev/tcp/time.nist.gov/13

56525 13-08-21 23:07:09 50 0 0  55.6 UTC(NIST) *

यह बैश शेल के अंतर्निहित नेटवर्क कैपेबिलिटो का लाभ उठाता है। यदि आप POSIX शेल या किसी अन्य शेल का उपयोग करते हैं तो आप उदाहरण के लिए netcat का उपयोग कर सकते हैं

$ nc time.nist.gov 13

56525 13-08-21 23:07:09 50 0 0  55.6 UTC(NIST) *

दोनों राष्ट्रीय मानक और प्रौद्योगिकी संस्थान के टीसीपी पोर्ट 13 पर टाइमर सर्वर को क्वेरी करते हैं और प्राप्त आंकड़ों को स्टडआउट पर आउटपुट करते हैं।

¹ संपादित करें: से बैश आदमी पेज: बैश कई फ़ाइल नाम विशेष रूप से संभालती है, जब वे, निम्न तालिका में वर्णित के रूप में पुनर्निर्देशन में किया जाता है:

/dev/tcp/host/port
यदि होस्ट एक मान्य होस्टनाम या इंटरनेट पता है, और पोर्ट एक पूर्णांक पोर्ट नंबर या सेवा का नाम है, तो संबंधित सॉकेट के लिए टीसीपी कनेक्शन खोलने का प्रयास करें।

/dev/udp/host/port
यदि होस्ट एक मान्य होस्टनाम या इंटरनेट पता है, और पोर्ट एक पूर्णांक पोर्ट नंबर या सेवा का नाम है, तो संबंधित सॉकेट के लिए एक यूडीपी कनेक्शन खोलने का प्रयास करें।


अच्छा लगा, १। क्या आप इस पर थोड़ा विस्तार कर सकते हैं कि यह कैसे काम करता है? या, क्योंकि मुझे लगता है कि मुझे यहाँ एक बड़ा हिस्सा याद आ रहा है, जो मुझे इस व्यवहार को देखने का नाम देता है? </dev/tcp/प्रारूप क्या है ?
टेर्डन

इस दृष्टिकोण के साथ मैं जो दो छोटी कमियां देख रहा हूं वह यह है कि अलग-अलग समय क्षेत्र आसानी से समर्थित नहीं होते हैं और किसी भी प्रारूप को सीधे-सीधे तरीके से निर्दिष्ट नहीं किया जा सकता है। उस स्थिति का उपाय करने के लिए, व्यक्ति समय एपी का उपयोग कर सकता है । उदाहरण के लिए, मध्य यूरोप के लिए वास्तविक समय को और अधिक मानवीय रूप में उपयोग करने के लिए, बस एक को आमंत्रित करता है:curl -G --data-urlencode "format=%D-%T\n" http://www.timeapi.org/cet/now?
मोरकी

निश्चित नहीं है कि time.nist.gov में कोई दर सीमित है या अतिभारित है, लेकिन मुझे इस होस्ट के साथ अलग-अलग परिणाम मिलते हैं।
स्नोक्रैश

22

प्रति डिस्ट्रो में कई एनटीपी सेवाएं उपलब्ध हैं।

यदि आप एक बार घड़ियों की तरह करना चाहते हैं :

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')"

17

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.

0

आप एचटीपी का उपयोग करके इंटरनेट पर समय भी प्राप्त कर सकते हैं जो कई प्रणालियों पर उपलब्ध है htpdateजो आमतौर पर केवल निकटतम सेकंड के लिए सटीकता है, या आप टीएलएस का उपयोग करके इसे प्राप्त कर tlsdateसकते हैं जो बेहतर सटीकता प्रदान कर सकता है:

tlsdate -nV google.com

इसके अलावा जब से ntpdate को अपदस्थ किया जा रहा है, तो आप sntpतारीख को और अधिक सटीक रूप से प्राप्त करने के लिए इसे (MacOS पर डिफ़ॉल्ट रूप से और ntp वितरण के हिस्से के रूप में आता है) का उपयोग कर सकते हैं :

sntp pool.ntp.org 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.