シェルを使用してNTPDがシステム時間を正常に更新したことを確認する方法は?

シェルを使用してNTPDがシステム時間を正常に更新したことを確認する方法は?

NTPDを使用してLinuxコンピュータの時刻を指定されたNTPサーバーに更新しようとしています。
シナリオは次のとおりです。

Linuxシステムが起動するたびにNTPサーバーの時間を更新したいと思います。成功しない場合は、成功するまで5分ごとに再試行したいと思います。(最大2時間)

検索した結果、NTPDを使用し、次のコマンドを使用する必要があることがわかりました。

#ntpdate ntp.server.com(NTPDを開始する前)
#ntpd some_options_to_start

問題は次のとおりです。

  1. このコマンドが時間を正常に更新したかどうかはどうすればわかりますか?
  2. ntpdで時間更新間隔を設定できますか? (それともシェルでsleepand loop do../ のようなwhileものを使うべきですかfor?)

上記のコマンドをシェルスクリプトで実行し、シェルをWebサーバーに配置したいと思います。これにより、クライアント(Webブラウザを使用)はWebサイトでスクリプトを実行します。したがって、(ネットワーク経由で)クライアントに結果を送信して、更新が成功したことを確認する必要があります。

ベストアンサー1

監視にスクリプトを使用するntpdことは一般的ではありません。デーモンは一般nagios的に。muninこのツールは、問題が発生した場合に警告を送信できます。muninオフセットが15msを超える場合は、Eメールを送信します。

通常、サーバーの1つが失敗した場合は、デーモンがサーバー間で選択できるように奇数のサーバーを使用する必要があります。通常3つで十分で、5つ以上であれば多すぎます。内部サーバーを監視する場合は、内部ネットワーク上のクライアントがそれを使用できる必要があります。合法的なサーバー、ISP NTP、またはDNSサーバーをクロックソースとして使用してください。パブリックプールとパブリックサーバーがあります。

ntpdこれは自己調整機能なので、一度設定して起動したら調整する必要はありません。最近の実装では日付の初期設定を実行するため、ntpdすべてを使用する必要はありません。ntpdate

次のスクリプトは、ntpd出力のオフセットを解析し、オフセットが多すぎると報告します。問題が発生した場合は、cronで実行すると電子メールが送信されます。スクリプトはデフォルトで0.1秒オフセットで警告します。

#!/bin/bash
limit=100   # Set your limit in milliseconds here
offsets=$(ntpq -nc peers | tail -n +3 | cut -c 62-66 | tr -d '-')
for offset in ${offsets}; do
    if [ ${offset:-0} -ge ${limit:-100} ]; then
        echo "An NTPD offset is excessive - Please investigate"
        exit 1  
    fi  
done
# EOF

おすすめ記事