क्या प्रमाणीकरण के साथ HTTP प्रॉक्सी के पीछे ntpdate का उपयोग करना संभव है? यदि यह संभव नहीं है, तो क्या कोई अच्छा विकल्प है?
क्या प्रमाणीकरण के साथ HTTP प्रॉक्सी के पीछे ntpdate का उपयोग करना संभव है? यदि यह संभव नहीं है, तो क्या कोई अच्छा विकल्प है?
जवाबों:
यह tlsdate के लिए एक स्पष्ट मामले की तरह लगता है।
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.
मुझे नहीं लगता कि मैंने कभी सूडो आह्वान के तर्क के रूप में इंटरनेट से असमान डेटा का उपयोग करने के लिए कई सिफारिशें देखी हैं।
कार्वोन द्वारा उत्तर पर विस्तार :
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/,//')"
मान लिया गया है कि पर्यावरण चर पहलेhttp_proxy से ही सेट है :
sudo date -s "$(curl -H'Cache-Control:no-cache' -sI google.com | grep '^Date:' | cut -d' ' -f3-6)Z"
हम पहले प्राप्त तिथि / समय को सत्यापित कर सकते हैं:
# 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)"
बस के मामले में, कुछ विकल्पों के लिए आवश्यक हो सकता है curl:
curl -x $proxy
स्पष्ट रूप से उपयोग करने के लिए प्रॉक्सी सर्वर को सेट करने के लिए, जब http_proxyपर्यावरण चर सेट नहीं किया जाता है, प्रोटोकॉल httpऔर पोर्ट 1080
( मैनुअल ) के लिए डिफ़ॉल्ट ।
curl -H 'Cache-Control: no-cache'
कैशिंग को स्पष्ट रूप से अक्षम करने के लिए , खासकर जब क्रोन जॉब में और / या प्रॉक्सी सर्वर के पीछे इस्तेमाल किया जाए।
आरएचईएल 6 के साथ वैकल्पिक रूप का परीक्षण किया गया जो आउटपुट में "जेड" को जोड़ने के बजाय '-यू' विकल्प का उपयोग करता है:
sudo date -u --set="$(curl -H 'Cache-Control: no-cache' -sD - http://google.com |grep '^Date:' |cut -d' ' -f3-6)"
BTW, google.comको प्राथमिकता दी जाती है www.google.com, क्योंकि पूर्व परिणाम एक 301पुनर्निर्देशित प्रतिक्रिया में होता है, जो बहुत छोटा होता है ( 569बनाम 20k+वर्ण) लेकिन फिर भी उपयोग करने के लिए अच्छा होता है।
sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
wgetसंस्करण है, हालांकि मैं व्यक्तिगत रूप से उपयोग करना पसंद करता हूं curl।
यदि यह विशुद्ध रूप से एक HTTP प्रॉक्सी है, तो यह पोर्ट 80 का उपयोग कर रहा है, इसलिए मूल उत्तर विशेष रूप से नहीं है। NTP, UDP पोर्ट 123 का उपयोग करता है। यदि यह अधिक सामान्य प्रॉक्सी सर्वर है, तो सभी बंदरगाहों की सेवा ले सकता है।
वहाँ कुछ प्रोग्राम हैं जो HTTP पर NTP करते हैं। मैं लिनक्स का उपयोग नहीं करता, लेकिन यह एक ऐसा कर सकता है:
http://www.rkeene.org/oss/htp/ (अभी भी यकीन नहीं है कि यह प्रमाणीकरण भी करेगा)।
मुझे विंडोज के लिए एक नहीं मिला, लेकिन अगर मैं करता हूं तो मैं वापस पोस्ट करूंगा।
Http प्रॉक्सी सर्वर के पीछे लोगों के लिए एक त्वरित और गंदा समाधान:
मेरा स्थान GMT + 4 है, मैं टाइमप्ले सर्वर से url http://www.timeapi.org/utc/in+four+hours के साथ वर्तमान समय की जांच कर सकता हूं , अधिक जानकारी के लिए pls अपने स्थान के लिए वेबसाइट देखें।
मेरे द्वारा की गई दिनांक और समय को सेट करने के लिए:
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 " " )
आप कमांड को दोहरा सकते हैं यदि प्रारंभिक 'समय' कमांड उच्च मूल्य की रिपोर्ट करता है ...
sudo date -s "$(curl -s http://www.timeapi.org/utc/now)"यदि आपके ओएस को सही तरीके से सेट किया गया है, तो आपको टाइमज़ोन पर ध्यान देने की आवश्यकता नहीं है। लिनक्स स्ट्रिंग में दिए गए टाइमज़ोन को पहचानता है और सिस्टम समय को उचित रूप से सेट करता है।
NTP सेवा समय को सिंक करने के लिए UDP प्रोटोकॉल का उपयोग कर रही है। इसलिए इसके लिए HTTP / TCP प्रॉक्सी काम नहीं कर सकता है। स्वीकृत उत्तर के लिए वैकल्पिक, प्रॉक्सी के पीछे समय को सिंक करने के लिए एक अच्छा htpdate टूल है।
एक क्रॉन नौकरी उदाहरण:
* 3 * * * /usr/bin/htpdate -s -P <PROXY_HOST>:<PROXY__PORT> www.linux.org www.freebsd.org
हालांकि http पर ntp का उल्लेख किया गया है, मुझे आश्चर्य है कि किसी ने भी निफ्टी की थोड़ी उपयोगिता का उल्लेख नहीं किया है जो http://www.vervest.org/lp/htpdate पर उपलब्ध है । विकल्पों के विपरीत, डेबियन और उबंटू के डिफ़ॉल्ट रिपोजिटरी का हिस्सा है और इसका उपयोग करके स्थापित किया जा सकता है ।htpdateapt-get
यह एक साधारण आदेश के रूप में या चुपचाप डेमन मोड में दोनों चलाया जा सकता है।
http_proxyपर्यावरण चर मान लिया गया है:
wget -S --spider "http://www.google.com/" 2>&1 | grep -E '^[[:space:]]*[dD]ate:' | sed 's/^[[:space:]]*[dD]ate:[[:space:]]*//'
या उपयोग करें curl -I --proxy="..." "http://www.google.com/"
आखिरकार, अगर Google की साइट पर अपना समय निर्धारित नहीं है, तो कोई उम्मीद नहीं है।
Https://superuser.com/a/509620/362156 पर विस्तार करना
मान लेते हैं कि आप बर्लिन (जर्मनी) में हैं।
तो इस का उपयोग करें:
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 के उत्कृष्ट उत्तर के पूर्ण-पूर्व-बेक्ड कार्यान्वयन के लिए, set_system_clock_from_google.sh देखें ।