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 is down에 대한 확인은 OS에 따라 다른 접근 방식으로 수행될 수 있습니다. 예를 들어 service ntpd statusred hat, centos 등에서 사용한 다음 $?변수에 대한 결과 상태를 확인합니다.

관련 정보