2012-04-05 23 views
6

Her makinede NTP zaman senkronizasyonunu doğrulayan bir uygulama oluşturmam gerekiyor. Başka bir deyişle, her bir makinenin LAN'ımın ortak bir zaman sunucusuyla (stratum) eşleşip eşleşmediğini belirlemem gerekiyor. Yani, iki yolla geldim.NTP zaman eşitlemesini doğrulayın

1) Her makinedeki NTP istemcisinin istatistik dosyasını oluşturmasını sağlayın. Bu yaklaşımı alırsam, istatistik dosyalarından hangisinin, makinedeki zamanın zaman sunucusunun bazı toleransları dahilinde olup olmadığını belirlemek için incelemeliyim? Bir peerstat, clockstats ve döngüler var. Bu dosyaların herhangi biri, saatin senkronize edilip edilmediğini belirlemek için kullanabileceğim bilgiler içeriyor mu?

2) ntpq komut satırı argümanını çağırın ve çıkışını pipetleyin. Çıkışı ayrıştır.

Şu anda, seçenek 1'i kullanmayı tercih ediyorum, ancak, belirttiğim gibi, NTP istatistik dosyasından herhangi birinin, zamanın eşitlenip eşleşmediğini belirlemek için kullanabileceğim bilgiler içerdiğinden emin değilim.

Daha iyi bir yaklaşım var mı?

NTP istemcisini doğrudan sorgulamak için kullanabileceğim bir API var mı?

Yardımlarınız için teşekkürler.

cevap

1

Senkronizasyonu doğrulamanın en iyi yolu, aslında denetimi doğrulamaktır; kontrol ettiğin çalışma tarafından oluşturulan bir dosyaya bakma. ntpdate -q veya eşdeğerini çalıştırmalı ve bildirilen ofsetin ihtiyacınız olan toleransın içinde olduğunu doğrulamanız gerekir.

+0

Not 'başlatmak | durdurmak | yeniden başlatılmasını | -q' yerine "yeniden yükle" yeniden yükle. –

0

Aynı sorularım var. İki komuttan oluşan bir kombinasyon kullanıyorum: ntptime [ve sonra "ERROR"] ntpq -p [ile ilgili hiçbir yinelemeyi onaylamak için çıktıyı ayrıştırın ve ardından hata yapmayan bir durumun yanı sıra en az bir hata döndürdüğünü onaylayın. senkronize edilmiş durumu belirtmek için bir "+" işareti]

Bu, CentOS kutularında harika çalışır, ancak FreeBSD sunucularında, senkronize edilmemiş birkaç saat olduğunda bile "Tamam" durumuna dönecektir. Yerel saat kararlı, ntpd çalışıyor ve saat kaynak sunucuları tutarlı bir zaman döndürüyor. Daha iyi bir cevabı kabul ederim. Ntpdate kullanmak için öneri, ntpdate'i zaman kaynak sunucularının bir listesini almak için ntp.conf komutunu kullanacak bir şey hazırlayabilirse işe yarayabilir.

5

ntpq -c "rv 0 stratum,offset" komutunu çalıştırabilir ve çıktıyı ayrıştırabilirsiniz. stratum döndürülürse < 16 ise offset, ntp havuzu ile sistem saati arasındaki milisaniye cinsinden saat farkı olacaktır.

Geliştirme konusunda ayrıca bir libntpq kitaplığı da vardır. Bu erken betas içinde, ama yeterince kötü bir şeye ihtiyacınız varsa kullanılabilir olmalıdır.

Güncelleme 2016/10/07: libntpq proje uzun zaman feshedilmiş ama aynı adla bir kütüphane ntp kaynağı ile birlikte görülüyor. Kullanışlı görünüyor ama büyük olasılıkla statik olarak bağlanması gerekecek. Bu şekilde kullanmak için GPL'yi tolere edebilmelidir.

0

Her iki dakika için zamanı izlemek istediğinizde iki seçenek de iyi sonuç çıkartacaktır, ardından ikinci seçenekle devam edin ... ntpq, tüm Ntp senkronizasyon işleminizi izlemek için çeşitli seçeneklere sahiptir ... ntpq> pe tüm yapılandırılmış akranlarınızın durumunu size verecektir, ntpq> her bir akran ile ilgili tüm ek ayrıntıları verecektir ve ntpq> rv her bir akran hakkında tam bir öznitelik verecektir ... ntp işleminizi hata ayıklamak için başka iç komutlar vardır. ntpq.Daha fazla açıklamaya ihtiyacınız varsa, aşağıdaki sayfaya gitmeye değer: http://doc.ntp.org/4.1.1/ntpq.htm

İlk seçenek olarak, ntp'nizde ntp.conf dosyasında belirtildiği gibi oluşturmaya ve güncellemeye devam etmek için bırakabileceğiniz bir istatistik raporu; Eğer, frekans & zaman ofset,

loopstats size tarihi, saati gösterecektir ... gün veya hafta vb başına vs. sabit saat disiplin süresini titremeleri oluşturulacak Peerstats ilgili tüm eş bilgilendirecektir isteyip mevcut ve yapılandırılmış saat hızları hakkında bilgi veren saatçi kadrosu

Bunlardan ayrı olarak rawstats ve sysstats seçenekleri de mevcuttur, ayrıca syslog'larınızı kontrol edebilir ve ntp.conf dosyası aracılığıyla Ntp günlüklerine yönlendirebilirsiniz.

Yukarıdaki bölümdeki izleme bölümünden geçebilirsiniz. ntpstats yapılandırma hakkında daha fazla bilgi öğrenebilirsiniz

Umut Bu size biraz yardımcı olabilir!

0

İhtiyacınız olan tek şey, makinenin uyumlu olup olmadığını belirlemekse, ntpstat'u kullanabilirsiniz. (Ben gömülü bir bilgisayarda bir 2.6 çekirdeği ile Debian kullanıyorum) bazı sistemlerde, aksi takdirde götüren bir shell script almak, ikili yolunu belirtmeniz gerektiğini

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

Bunu Ubuntu 16.04 üzerinde kullanmaya çalışıyordum. Ancak, ağ kablosunun fişi çekilmeden 10 dakikadan fazla sonra ve 'ntpq -pn' tarafından döndürülen liste boş olsa bile, her zaman 0'ı rapor eder. Henüz bir hata olup olmadığını ya da daha uzun süre beklemeliydim. – Huygens

İlgili konular