6

各マシンで NTP 時刻同期を検証するアプリケーションを作成する必要があります。つまり、各マシンが自分の LAN であり、共通のタイム サーバー (stratum) に同期されているかどうかを判断する必要があります。だから、これまで私は2つの方法を思いつきました。

1) 各マシンの NTP クライアントに統計ファイルを生成させます。この方法をとる場合、マシンの時間がタイム サーバーの許容範囲内にあるかどうかを判断するには、どの統計ファイルを調べる必要がありますか? peerstats、clockstats、および loopstats があります。これらのファイルには、時刻が同期されているかどうかを判断するために使用できる情報が含まれていますか?

2) ntpq コマンド ライン引数を呼び出し、その出力をパイプします。出力を解析します。

現時点ではオプション 1 を好みますが、前述したように、時刻が同期されているかどうかを判断するために使用できる情報が NTP 統計ファイルに含まれているかどうかはわかりません。

より良いアプローチはありますか。

NTP クライアントを直接照会するために使用できる API はありますか?

ご協力いただきありがとうございます。

4

5 に答える 5

6

コマンドを実行ntpq -c "rv 0 stratum,offset"して出力を解析できます。返さstratumれた値が 16 未満の場合はoffset、ntp プールとシステム クロックの時間差 (ミリ秒) になります。

libntpq開発中のライブラリもあります。初期のベータ版ですが、どうしても必要な場合は使用できるはずです。

更新 2016-10-07 :libntpqプロジェクトは長い間機能していないようですが、ntpソースには同じ名前のライブラリが含まれています。使用可能に見えますが、おそらく静的にリンクする必要があります。このように GPL を使用するには、GPL を許容できる必要があります。

于 2013-03-07T01:04:41.167 に答える
1

同じ質問があります。私は 2 つのコマンドの組み合わせを使用してきました: ntptime [そして、出力を解析して「エラー」という単語が出現しないことを確認します] ntpq -p [そして、エラー以外のステータスと、少なくとも 1 つの " + "同期状態を示す記号]

これは私の CentOS ボックスではうまく機能しますが、私の FreeBSD サーバーでは、現地時間が安定していて、ntpd が実行されていて、タイム ソース サーバーが稼働している限り、同期が数時間ずれていても「OK」ステータスを返します。一貫した時間を返しています。より良い答えを歓迎します。ntpdate が ntp.conf を使用してタイム ソース サーバーのリストを取得するように何かを調整できれば、ntpdate を使用するという提案が機能する可能性があります。

于 2012-05-01T19:33:48.427 に答える
0

数分ごとに時間を監視したい場合は、両方とも良い結果を出力すると思います.2番目のオプションを選択してください... ntpqには、Ntp同期プロセス全体を監視するためのさまざまなオプションがあります... ntpq>peはあなたを与えます構成されたすべてのピアのステータス、ntpq>as は個々のピアに関するすべての追加詳細を提供し、ntpq>rv は各ピアに関する完全な概要を提供します...ntpq を介して ntp プロセスをデバッグするための他の内部コマンドがあります。さらに説明が必要な場合は、次のページを参照する価値があります。http://doc.ntp.org/4.1.1/ntpq.htm

最初のオプションとして、ntp.conf ファイルに記載されているように生成および更新し続けるために ntp に残すことができる統計レポートです。

Loopstats は、日付、時刻、周波数と時間オフセット、ジッター、クロック規律の時定数などを表示します。Peerstats は、存在および構成された clockstats がクロックドライバーのステータスについて通知するすべてのピアについて通知します

これらとは別に、rawstats と sysstats オプションも利用できます。また、syslog を確認し、ntp.conf ファイルを介して独自の Ntp ログにリダイレクトすることもできます。

上記のリンクの監視セクションに進み、ntpstats の構成方法について詳しく知ることができます。

これが少し役立つことを願っています!!

于 2013-03-07T10:23:56.223 に答える
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.
于 2015-01-25T12:17:36.443 に答える