mirror of
https://github.com/librenms/librenms-agent.git
synced 2024-05-09 09:54:52 +00:00
123 lines
4.3 KiB
Bash
Executable File
123 lines
4.3 KiB
Bash
Executable File
#!/bin/sh
|
|
# Please make sure the paths below are correct.
|
|
# Alternatively you can put them in $0.conf, meaning if you've named
|
|
# this script ntp-client.sh then it must go in ntp-client.sh.conf .
|
|
#
|
|
# NTPQV output version of "ntpq -c rv"
|
|
# p1 DD-WRT and some other outdated linux distros
|
|
# p11 FreeBSD 11 and any linux distro that is up to date
|
|
#
|
|
# If you are unsure, which to set, run this script and make sure that
|
|
# the JSON output variables match that in "ntpq -c rv".
|
|
#
|
|
|
|
CONFIGFILE=/etc/snmp/ntp-server.conf
|
|
|
|
BIN_ENV='/usr/bin/env'
|
|
|
|
if [ -f $CONFIGFILE ] ; then
|
|
# shellcheck disable=SC1090
|
|
. $CONFIGFILE
|
|
fi
|
|
|
|
BIN_NTPD="$BIN_ENV ntpd"
|
|
BIN_NTPQ="$BIN_ENV ntpq"
|
|
BIN_NTPDC="$BIN_ENV ntpdc"
|
|
BIN_GREP="$BIN_ENV grep"
|
|
BIN_TR="$BIN_ENV tr"
|
|
BIN_CUT="$BIN_ENV cut"
|
|
BIN_SED="$BIN_ENV sed"
|
|
BIN_AWK="$BIN_ENV awk"
|
|
|
|
NTPQV="p11"
|
|
################################################################
|
|
# Don't change anything unless you know what are you doing #
|
|
################################################################
|
|
CONFIG=$0".conf"
|
|
if [ -f "$CONFIG" ]; then
|
|
# shellcheck disable=SC1090
|
|
. "$CONFIG"
|
|
fi
|
|
VERSION=1
|
|
|
|
STRATUM=$($BIN_NTPQ -c rv | $BIN_GREP -Eow "stratum=[0-9]+" | $BIN_CUT -d "=" -f 2)
|
|
|
|
# parse the ntpq info that requires version specific info
|
|
NTPQ_RAW=$($BIN_NTPQ -c rv | $BIN_GREP jitter | $BIN_SED 's/[[:alpha:]=,_]/ /g')
|
|
if [ $NTPQV = "p11" ]; then
|
|
# shellcheck disable=SC2086
|
|
OFFSET=$(echo $NTPQ_RAW | $BIN_AWK -F ' ' '{print $3}')
|
|
# shellcheck disable=SC2086
|
|
FREQUENCY=$(echo $NTPQ_RAW | $BIN_AWK -F ' ' '{print $4}')
|
|
# shellcheck disable=SC2086
|
|
SYS_JITTER=$(echo $NTPQ_RAW | $BIN_AWK -F ' ' '{print $5}')
|
|
# shellcheck disable=SC2086
|
|
CLK_JITTER=$(echo $NTPQ_RAW | $BIN_AWK -F ' ' '{print $6}')
|
|
# shellcheck disable=SC2086
|
|
CLK_WANDER=$(echo $NTPQ_RAW | $BIN_AWK -F ' ' '{print $7}')
|
|
fi
|
|
if [ $NTPQV = "p1" ]; then
|
|
# shellcheck disable=SC2086
|
|
OFFSET=$(echo $NTPQ_RAW | $BIN_AWK -F ' ' '{print $2}')
|
|
# shellcheck disable=SC2086
|
|
FREQUENCY=$(echo $NTPQ_RAW | $BIN_AWK -F ' ' '{print $3}')
|
|
# shellcheck disable=SC2086
|
|
SYS_JITTER=$(echo $NTPQ_RAW | $BIN_AWK -F ' ' '{print $4}')
|
|
# shellcheck disable=SC2086
|
|
CLK_JITTER=$(echo $NTPQ_RAW | $BIN_AWK -F ' ' '{print $5}')
|
|
# shellcheck disable=SC2086
|
|
CLK_WANDER=$(echo $NTPQ_RAW | $BIN_AWK -F ' ' '{print $6}')
|
|
fi
|
|
|
|
VER=$($BIN_NTPD --version 2>&1 | cut -d\ -f 2 | head -n 1)
|
|
if [ "$VER" = "4.2.6p5" ]; then
|
|
USECMD=$(echo "$BIN_NTPDC" -c iostats 127.0.0.1)
|
|
else
|
|
USECMD=$(echo "$BIN_NTPQ" -c iostats 127.0.0.1)
|
|
fi
|
|
CMD2=$($USECMD | $BIN_TR -d ' ' | $BIN_CUT -d : -f 2 | $BIN_TR '\n' ' ')
|
|
|
|
# shellcheck disable=SC2086
|
|
TIMESINCERESET=$(echo $CMD2 | $BIN_AWK -F ' ' '{print $1}')
|
|
# shellcheck disable=SC2086
|
|
RECEIVEDBUFFERS=$(echo $CMD2 | $BIN_AWK -F ' ' '{print $2}')
|
|
# shellcheck disable=SC2086
|
|
FREERECEIVEBUFFERS=$(echo $CMD2 | $BIN_AWK -F ' ' '{print $3}')
|
|
# shellcheck disable=SC2086
|
|
USEDRECEIVEBUFFERS=$(echo $CMD2 | $BIN_AWK -F ' ' '{print $4}')
|
|
# shellcheck disable=SC2086
|
|
LOWWATERREFILLS=$(echo $CMD2 | $BIN_AWK -F ' ' '{print $5}')
|
|
# shellcheck disable=SC2086
|
|
DROPPEDPACKETS=$(echo $CMD2 | $BIN_AWK -F ' ' '{print $6}')
|
|
# shellcheck disable=SC2086
|
|
IGNOREDPACKETS=$(echo $CMD2 | $BIN_AWK -F ' ' '{print $7}')
|
|
# shellcheck disable=SC2086
|
|
RECEIVEDPACKETS=$(echo $CMD2 | $BIN_AWK -F ' ' '{print $8}')
|
|
# shellcheck disable=SC2086
|
|
PACKETSSENT=$(echo $CMD2 | $BIN_AWK -F ' ' '{print $9}')
|
|
# shellcheck disable=SC2086
|
|
PACKETSENDFAILURES=$(echo $CMD2 | $BIN_AWK -F ' ' '{print $10}')
|
|
#INPUTWAKEUPS=$(echo $CMD2 | $BIN_AWK -F ' ' '{print $11}')
|
|
# shellcheck disable=SC2086
|
|
USEFULINPUTWAKEUPS=$(echo $CMD2 | $BIN_AWK -F ' ' '{print $12}')
|
|
|
|
echo '{"data":{"offset":"'"$OFFSET"\
|
|
'","frequency":"'"$FREQUENCY"\
|
|
'","sys_jitter":"'"$SYS_JITTER"\
|
|
'","clk_jitter":"'"$CLK_JITTER"\
|
|
'","clk_wander":"'"$CLK_WANDER"\
|
|
'","stratum":"'"$STRATUM"\
|
|
'","time_since_reset":"'"$TIMESINCERESET"\
|
|
'","receive_buffers":"'"$RECEIVEDBUFFERS"\
|
|
'","free_receive_buffers":"'"$FREERECEIVEBUFFERS"\
|
|
'","used_receive_buffers":"'"$USEDRECEIVEBUFFERS"\
|
|
'","low_water_refills":"'"$LOWWATERREFILLS"\
|
|
'","dropped_packets":"'"$DROPPEDPACKETS"\
|
|
'","ignored_packets":"'"$IGNOREDPACKETS"\
|
|
'","received_packets":"'"$RECEIVEDPACKETS"\
|
|
'","packets_sent":"'"$PACKETSSENT"\
|
|
'","packet_send_failures":"'"$PACKETSENDFAILURES"\
|
|
'","input_wakeups":"'"$PACKETSENDFAILURES"\
|
|
'","useful_input_wakeups":"'"$USEFULINPUTWAKEUPS"\
|
|
'"},"error":"0","errorString":"","version":"'$VERSION'"}'
|