ntpの状態とシステム時刻の同期を確認するスクリプト

ntpの状態とシステム時刻の同期を確認するスクリプト

スクリプトを探しています。(1)NTPステータスを確認して(2)指定されたタイムサーバーの+/- 1秒以内にある場合(例:123.456.789.10)。(サム)また、システム時間を確認して、タイムゾーンが正しく設定されていることを確認してください(例:太平洋標準時)

これが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がダウンしていることを確認できます。たとえば、service ntpd statusred hat、centosなどに使用した後、$?結果変数の状態を確認します。

関連情報