NTP ステータスとシステム時刻同期を確認するスクリプト

NTP ステータスとシステム時刻同期を確認するスクリプト

スクリプトを探しています(1)ntpのステータスを確認し、(2)特定のタイムサーバーから+/- 1秒以内の場合(例:123.456.789.10)。(3)さらに、システム時間をチェックして、タイムゾーンが正しく設定されているかどうかを確認する必要があります(例:PST

これまでに NTP のステータスを確認した結果は次のとおりです。

#!/bin/bash

if [[ ! -x /usr/bin/ntpstat ]]
then
  echo "ntpstat is NOT installed: please install it"
  exit 3

res=$(/usr/bin/ntpstat)
rc=$?

case $rc in
  0 )
    echo "clocks are synchronized"
    ;;
  1 )
    echo "WARNING: clocks are NOT synchronized"
    ;;
  2 )
    echo "CRITICAL: NTPD IS DOWN -- NO STATUS"
    ;;
esac

答え1

私はntpqそれに使います。

ここにいくつかのスニペットと疑似コードを示します。

まず、オフセットを計算して var に保存します。

ntp_offset=$(ntpq -pn | \
     /usr/bin/awk 'BEGIN { offset=1000 } $1 ~ /\*/ { offset=$9 } END { print offset }')
  1. サーバーが正常である条件: ntp_offset < 1000

  2. 次の場合、サーバーは同期されません: ntp_offset >= 1000

  3. ntpd がダウンしているかどうかのチェックは、OS に応じてさまざまな方法で実行できます。たとえば、service ntpd statusRed Hat、Centos などで使用し、$?変数の結果ステータスを確認します。

関連情報