2012-04-05 23 views
6

मुझे एक ऐसा एप्लिकेशन बनाने की आवश्यकता है जो प्रत्येक मशीन पर एनटीपी समय सिंक्रनाइज़ेशन को मान्य करे। दूसरे शब्दों में, मुझे यह निर्धारित करने की ज़रूरत है कि प्रत्येक मशीन मेरा लैन एक सामान्य समय सर्वर (स्ट्रैटम) में सिंक हो जाती है या नहीं। तो, अब तक मैं दो तरीकों से आया था।एनटीपी समय सिंक्रनाइज़ेशन को कितना मान्य करता है

1) प्रत्येक मशीन पर एनटीपी क्लाइंट आंकड़े फ़ाइल उत्पन्न करता है। यदि मैं इस दृष्टिकोण को लेता हूं, तो आंकड़ों में से कौन सी फ़ाइल को यह निर्धारित करने के लिए जांच करनी चाहिए कि मशीन पर समय समय सर्वर की कुछ सहिष्णुता के भीतर है या नहीं? एक peerstats, घड़ी की दुकान और loopstats है। क्या इनमें से किसी भी फाइल में ऐसी जानकारी होती है जिसका उपयोग मैं यह निर्धारित करने के लिए कर सकता हूं कि समय सिंक हो गया है या नहीं?

2) ntpq कमांड लाइन तर्क को आमंत्रित करें और इसके आउटपुट को पाइप करें। आउटपुट पार्स करें।

अभी मैं विकल्प 1 पसंद करता हूं, लेकिन जैसा कि मैंने संकेत दिया है, मुझे यकीन नहीं है कि एनटीपी आंकड़ों में से किसी भी फ़ाइल में ऐसी जानकारी है जो मैं निर्धारित कर सकता हूं कि समय सिंक्रनाइज़ किया गया है या नहीं।

क्या कोई बेहतर तरीका है।

क्या कोई एपीआई है जिसका उपयोग मैं एनटीपी क्लाइंट से सीधे पूछने के लिए कर सकता हूं?

आपकी मदद के लिए धन्यवाद।

उत्तर

1

सिंक्रनाइज़ेशन को सत्यापित करने का सबसे अच्छा तरीका वास्तव में इसे सत्यापित करना है, डेमॉन द्वारा उत्पन्न फ़ाइल को न देखें, जिसका काम आप जांच रहे हैं। आपको ntpdate -q या समकक्ष चलाना चाहिए और यह सत्यापित करना चाहिए कि रिपोर्ट ऑफसेट आपको जो भी सहिष्णुता है, उसके भीतर है।

+0

ध्यान दें कि कुछ सिस्टम (मैं एक एम्बेडेड कंप्यूटर पर एक 2.6 कर्नेल के साथ डेबियन उपयोग कर रहा हूँ) पर, आप द्विआधारी के लिए पथ, अन्यथा आप एक खोल स्क्रिप्ट है कि लेता है पाने का उल्लेख करना होगा 'शुरू | रोक | पुनः आरंभ '-q' विकल्प के बजाय | पुनः लोड | बल-पुनः लोड करें '। –

0

मेरे पास एक ही प्रश्न है। मैं दो आदेशों के संयोजन का उपयोग किया गया है: [ "त्रुटि" और फिर शब्द का कोई घटनाओं की पुष्टि करने के उत्पादन को पार्स] ntptime ntpq -p [और उसके बाद इस बात की पुष्टि यह रिटर्न एक गैर त्रुटि स्थिति है, साथ ही कम से कम एक "+" चिह्न एक तुल्यकालन राज्य इंगित करने के लिए]

यह मेरे CentOS बक्से पर अच्छा काम करता है, लेकिन मेरी FreeBSD सर्वर पर, यह एक "ठीक है" का दर्जा वापस आ जाएगी तब भी जब यह सिंक्रनाइज़ेशन से बाहर कई घंटे है, जब तक कि स्थानीय समय स्थिर है, एनटीपीडी चल रहा है, और समय स्रोत सर्वर एक सतत समय लौट रहे हैं। मैं एक बेहतर जवाब का स्वागत करेंगे। Ntpdate का उपयोग करने के लिए सुझाव काम कर सकता है, अगर मैं ntpdate को ntp.conf का उपयोग करने के लिए कुछ समय निकाल सकता हूं ताकि समय स्रोत सर्वर की सूची प्राप्त हो सके।

5

आप ntpq -c "rv 0 stratum,offset" कमांड चला सकते हैं और आउटपुट पार्स कर सकते हैं। यदि stratum लौटाया गया है < 16 तो offset एनटीपी पूल और सिस्टम घड़ी को मिलीसेकंड में समय अंतर होगा।

विकास में libntpq लाइब्रेरी भी है। यह शुरुआती बीटा में है, लेकिन अगर आपको कुछ बुरी तरह की ज़रूरत है तो इसे प्रयोग योग्य होना चाहिए।

अद्यतन 2016/10/07: ऐसा लगता है libntpq परियोजना की तरह लंबे समय मृत है लेकिन समान नाम के साथ एक पुस्तकालय ntp स्रोत के साथ शामिल है। यह उपयोग करने योग्य लगता है लेकिन संभवतः इसे स्थैतिक रूप से लिंक करने की आवश्यकता होगी। इस तरह से इसका उपयोग करने के लिए जीपीएल को सहन करने में सक्षम होना चाहिए।

0

मुझे लगता है कि दोनों अच्छे परिणामों को केवल एक ही अंतर का उत्पादन करेंगे यदि आप वास्तव में हर कुछ मिनटों के लिए समय की निगरानी करना चाहते हैं तो दूसरे विकल्प के साथ जाएं ... ntpq में आपकी संपूर्ण एनटीपी सिंक प्रक्रिया की निगरानी करने के लिए कई विकल्प हैं ... ntpq> पे, आप अपने सभी के लिए कॉन्फ़िगर साथियों की स्थिति दे देंगे ntpq> के रूप में प्रत्येक व्यक्ति के साथियों और ntpq के बारे में सभी अतिरिक्त विवरण दे देंगे> आर.वी. प्रत्येक सहकर्मी के बारे में पूरी सार दे देंगे ... वहाँ के माध्यम से अपना NTP प्रक्रिया डिबग करने के लिए अन्य आंतरिक आदेशों हैं ntpq।यदि आपको कुछ और स्पष्टीकरण की आवश्यकता है तो इसके पृष्ठ के माध्यम से जाना जा रहा है: http://doc.ntp.org/4.1.1/ntpq.htm

आपके पहले विकल्प के लिए, यह एक आंकड़े रिपोर्ट है जिसे आप अपने एनटीपी पर छोड़ सकते हैं ताकि ntp.conf फ़ाइल में उल्लिखित अनुसार उत्पन्न और अद्यतन किया जा सके। आप चाहते हैं कि क्या यह, आवृत्ति & समय ऑफसेट प्रति दिन या सप्ताह आदि उत्पन्न करने के लिए किया जा ...

Loopstats आप तारीख, समय दिखाएगा,, घबराना घड़ी अनुशासन समय निरंतर आदि Peerstats आप के बारे में अपने सभी साथियों को सूचित करेंगे जहां वर्तमान और कॉन्फ़िगर किया गया घड़ीस्टैट घड़ी घड़ी की स्थिति के बारे में सूचित करेगा

इनके अलावा कच्चेस्टैट और सिस्टैट विकल्प भी उपलब्ध हैं, इसके अलावा आप अपने syslogs को देख सकते हैं और ntp.conf फ़ाइल

के माध्यम से अपने स्वयं के एनटीपी लॉग पर रीडायरेक्ट कर सकते हैं, आप ऊपर उल्लिखित लिंक में निगरानी अनुभाग से जा सकते हैं और ntpstats को कॉन्फ़िगर करने के तरीके के बारे में अधिक जानकारी में सीख सकते हैं

आशा है कि यह आपको थोड़ा सा मदद कर सके !!

0

यदि आपको केवल यह निर्धारित करना है कि मशीन सिंक हो रही है या नहीं, तो आप ntpstat का उपयोग कर सकते हैं।

SYNOPSIS 
    ntpstat 

DESCRIPTION 
    ntpstat will report the synchronisation state of the NTP daemon 
    running on the local machine. If the local system is found to be 
    synchronised to a reference time source, ntpstat will report the 
    approximate time accuracy. 

RETURNS 
    ntpstat returns 0 if clock is synchronised. 
    ntpstat returns 1 if clock is not synchronised. 
    ntpstat returns 2 if clock state is indeterminant, 
    for example if ntpd is not contactable. 
+0

मैं उबंटू 16.04 पर इसका उपयोग करने की कोशिश कर रहा था। लेकिन नेटवर्क केबल अनप्लग होने के 10 मिनट से भी अधिक समय बाद भी यह हमेशा 0 की रिपोर्ट करता है और घटना के दौरान 'ntpq -pn' द्वारा सूची वापस खाली होती है। मैंने अभी तक जांच नहीं की है कि यह एक बग है या अगर मुझे और भी इंतजार करना चाहिए था ... – Huygens