#!/bin/bash # ====================================================================== # # NAGIOS CLIENT CHECK :: check if timesync with ntpd or timesyncd # is active # # ---------------------------------------------------------------------- # script checks output of "timedatectl status" and shows status of # the sync service (systemd-timesyncd or chronyd) # - centos7 # - debian8 # - ubuntu16 # ---------------------------------------------------------------------- # 2018-10-26 v1.0 <axel.hahn@iml.unibe.ch> # 2020-03-05 v1.1 <axel.hahn@iml.unibe.ch> switch to ph.* helper functions # 2020-05-13 v1.2 <axel.hahn@iml.unibe.ch> update pre detect output of timedatectl # ====================================================================== . `dirname $0`/inc_pluginfunctions myos=`ph.getOS` tmpfile=/tmp/check_timesync.tmp # ---------------------------------------------------------------------- # pre check if timedatectl is available # ---------------------------------------------------------------------- which timedatectl >/dev/null if [ $? -ne 0 ]; then ph.abort "timesync UNKNOWN: timedatectl was not found ... maybe your OS ${myos} is not supported" fi # ---------------------------------------------------------------------- # check output of timedatectl command # ---------------------------------------------------------------------- # ph.execIfReady "timedatectl status | grep '^NTP synchronized'" >/dev/null # echo ----- output of timedatectl status >$tmpfile # timedatectl status >>$tmpfile ph.execIfReady "timedatectl show >$tmpfile; grep '^NTPSynchronized' $tmpfile >/dev/null" cat $tmpfile | grep "^NTPSynchronized" >/dev/null if [ $? -ne 0 ]; then ph.setStatus "unknown" # ph.status "timesync: timedatectl has no line NTP synchronized ... maybe your OS ${myos} is not supported" ph.status "timesync: timedatectl has no line NTP synchronized" cat $tmpfile else cat $tmpfile | grep "^NTPSynchronized=yes" >/dev/null if [ $? -eq 0 ]; then ph.status "timesync: a timesync service is active on this ${myos} host" else ph.setStatus "critical" ph.status "timesync: there is no active timesync - you need to activate ntpd or timesyncd on this ${myos} host" fi fi # /timedatectl # ---------------------------------------------------------------------- # detect sync service and show its output # ---------------------------------------------------------------------- echo >>$tmpfile sSyncService= if [ -f /etc/systemd/timesyncd.conf ]; then sSyncService="systemd-timesyncd" fi if [ -f /etc/chrony.conf ]; then sSyncService="chronyd" fi if [ -f /etc/chrony/chrony.conf ]; then sSyncService="chronyd" fi if [ -z $sSyncService ]; then echo "REMARK: no sync service detected ... or this sensu check does not support it" >>$tmpfile else echo ----- output of systemctl status $sSyncService >>$tmpfile systemctl status $sSyncService >>$tmpfile fi # ---------------------------------------------------------------------- # output & exit # ---------------------------------------------------------------------- cat $tmpfile | grep "^NTPSynchronized" echo cat $tmpfile rm -f $tmpfile ph.exit # ----------------------------------------------------------------------