लिनक्स में कमांड लाइन से इंटरनेट से वर्तमान समय कैसे पता करें?
उदाहरण के लिए, ntpq
कार्यक्रम के साथ ?
नोट: कंप्यूटर या ऑपरेटिंग सिस्टम घड़ी से नहीं, बल्कि इंटरनेट से?
नोट: मैं CHANGE या SYNC समय पर नहीं जाना चाहता। बस पता है।
लिनक्स में कमांड लाइन से इंटरनेट से वर्तमान समय कैसे पता करें?
उदाहरण के लिए, ntpq
कार्यक्रम के साथ ?
नोट: कंप्यूटर या ऑपरेटिंग सिस्टम घड़ी से नहीं, बल्कि इंटरनेट से?
नोट: मैं CHANGE या SYNC समय पर नहीं जाना चाहता। बस पता है।
जवाबों:
यदि आप 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?
प्रति डिस्ट्रो में कई एनटीपी सेवाएं उपलब्ध हैं।
यदि आप एक बार घड़ियों की तरह करना चाहते हैं :
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.
आप एचटीपी का उपयोग करके इंटरनेट पर समय भी प्राप्त कर सकते हैं जो कई प्रणालियों पर उपलब्ध है htpdate
जो आमतौर पर केवल निकटतम सेकंड के लिए सटीकता है, या आप टीएलएस का उपयोग करके इसे प्राप्त कर tlsdate
सकते हैं जो बेहतर सटीकता प्रदान कर सकता है:
tlsdate -nV google.com
इसके अलावा जब से ntpdate को अपदस्थ किया जा रहा है, तो आप sntp
तारीख को और अधिक सटीक रूप से प्राप्त करने के लिए इसे (MacOS पर डिफ़ॉल्ट रूप से और ntp वितरण के हिस्से के रूप में आता है) का उपयोग कर सकते हैं :
sntp pool.ntp.org