summaryrefslogtreecommitdiffstats
path: root/plugins-scripts/check_log.sh
diff options
context:
space:
mode:
authorRincewindsHat <12514511+RincewindsHat@users.noreply.github.com>2023-02-19 13:39:08 (GMT)
committerRincewindsHat <12514511+RincewindsHat@users.noreply.github.com>2023-02-19 13:39:08 (GMT)
commit74b6984047d330a3cc7cb7f63645849fe7676c63 (patch)
tree65a26800103d8d66f7e6cb4acfbfc9f315ec750b /plugins-scripts/check_log.sh
parent423284edfa980fc3fdb51ab20af96685a988ba97 (diff)
parentc07206f2ccc2356aa74bc6813a94c2190017d44e (diff)
downloadmonitoring-plugins-74b6984047d330a3cc7cb7f63645849fe7676c63.tar.gz
Merge branch 'master' into check_icmp_cleanuprefs/pull/1807/head
Diffstat (limited to 'plugins-scripts/check_log.sh')
-rwxr-xr-xplugins-scripts/check_log.sh99
1 files changed, 35 insertions, 64 deletions
diff --git a/plugins-scripts/check_log.sh b/plugins-scripts/check_log.sh
index fdb5741..c623a8d 100755
--- a/plugins-scripts/check_log.sh
+++ b/plugins-scripts/check_log.sh
@@ -18,7 +18,7 @@
18# On the first run of the plugin, it will return an OK state with a message 18# On the first run of the plugin, it will return an OK state with a message
19# of "Log check data initialized". On successive runs, it will return an OK 19# of "Log check data initialized". On successive runs, it will return an OK
20# state if *no* pattern matches have been found in the *difference* between the 20# state if *no* pattern matches have been found in the *difference* between the
21# log file and the older copy of the log file. If the plugin detects any 21# log file and the older copy of the log file. If the plugin detects any
22# pattern matches in the log diff, it will return a CRITICAL state and print 22# pattern matches in the log diff, it will return a CRITICAL state and print
23# out a message is the following format: "(x) last_match", where "x" is the 23# out a message is the following format: "(x) last_match", where "x" is the
24# total number of pattern matches found in the file and "last_match" is the 24# total number of pattern matches found in the file and "last_match" is the
@@ -76,6 +76,7 @@ print_usage() {
76 echo "" 76 echo ""
77 echo "Other parameters:" 77 echo "Other parameters:"
78 echo " -a|--all : Print all matching lines" 78 echo " -a|--all : Print all matching lines"
79 echo " --exclude: Exclude a pattern (-p or -e also applies here when used)"
79 echo " -p|--perl-regex : Use perl style regular expressions in the query" 80 echo " -p|--perl-regex : Use perl style regular expressions in the query"
80 echo " -e|--extended-regex : Use extended style regular expressions in the query (not necessary for GNU grep)" 81 echo " -e|--extended-regex : Use extended style regular expressions in the query (not necessary for GNU grep)"
81} 82}
@@ -99,82 +100,46 @@ if [ $# -lt 1 ]; then
99fi 100fi
100 101
101# Grab the command line arguments 102# Grab the command line arguments
102
103#logfile=$1
104#oldlog=$2
105#query=$3
106exitstatus=$STATE_WARNING #default 103exitstatus=$STATE_WARNING #default
107while test -n "$1"; do 104while test -n "$1"; do
108 case "$1" in 105 case "$1" in
109 --help) 106 -h | --help)
110 print_help
111 exit "$STATE_OK"
112 ;;
113 -h)
114 print_help 107 print_help
115 exit "$STATE_OK" 108 exit "$STATE_OK"
116 ;; 109 ;;
117 --version) 110 -V | --version)
118 print_revision "$PROGNAME" "$REVISION" 111 print_revision "$PROGNAME" "$REVISION"
119 exit "$STATE_OK" 112 exit "$STATE_OK"
120 ;; 113 ;;
121 -V) 114 -F | --filename)
122 print_revision "$PROGNAME" "$REVISION"
123 exit "$STATE_OK"
124 ;;
125 --filename)
126 logfile=$2 115 logfile=$2
127 shift 2 116 shift 2
128 ;; 117 ;;
129 -F) 118 -O | --oldlog)
130 logfile=$2
131 shift 2
132 ;;
133 --oldlog)
134 oldlog=$2 119 oldlog=$2
135 shift 2 120 shift 2
136 ;; 121 ;;
137 -O) 122 -q | --query)
138 oldlog=$2
139 shift 2
140 ;;
141 --query)
142 query=$2 123 query=$2
143 shift 2 124 shift 2
144 ;; 125 ;;
145 -q) 126 --exclude)
146 query=$2 127 exclude=$2
147 shift 2 128 shift 2
148 ;; 129 ;;
149 -x) 130 -x | --exitstatus)
150 exitstatus=$2 131 exitstatus=$2
151 shift 2 132 shift 2
152 ;; 133 ;;
153 --exitstatus) 134 -e | --extended-regex)
154 exitstatus=$2
155 shift 2
156 ;;
157 --extended-regex)
158 ERE=1 135 ERE=1
159 shift 136 shift
160 ;; 137 ;;
161 -e) 138 -p | --perl-regex)
162 ERE=1
163 shift
164 ;;
165 --perl-regex)
166 PRE=1
167 shift
168 ;;
169 -p)
170 PRE=1 139 PRE=1
171 shift 140 shift
172 ;; 141 ;;
173 --all) 142 -a | --all)
174 ALL=1
175 shift
176 ;;
177 -a)
178 ALL=1 143 ALL=1
179 shift 144 shift
180 ;; 145 ;;
@@ -188,18 +153,18 @@ done
188 153
189# Parameter sanity check 154# Parameter sanity check
190if [ $ERE ] && [ $PRE ] ; then 155if [ $ERE ] && [ $PRE ] ; then
191 echo "Can not use extended and perl regex at the same time" 156 echo "Can not use extended and perl regex at the same time"
192 exit "$STATE_UNKNOWN" 157 exit "$STATE_UNKNOWN"
193fi 158fi
194 159
195GREP="grep" 160GREP="grep"
196 161
197if [ $ERE ]; then 162if [ $ERE ]; then
198 GREP="grep -E" 163 GREP="grep -E"
199fi 164fi
200 165
201if [ $PRE ]; then 166if [ $PRE ]; then
202 GREP="grep -P" 167 GREP="grep -P"
203fi 168fi
204 169
205# If the source log file doesn't exist, exit 170# If the source log file doesn't exist, exit
@@ -213,8 +178,8 @@ elif [ ! -r "$logfile" ] ; then
213fi 178fi
214# If no oldlog was given this can not work properly, abort then 179# If no oldlog was given this can not work properly, abort then
215if [ -z "$oldlog" ]; then 180if [ -z "$oldlog" ]; then
216 echo "Oldlog parameter is needed" 181 echo "Oldlog parameter is needed"
217 exit $STATE_UNKNOWN 182 exit $STATE_UNKNOWN
218fi 183fi
219 184
220# If the old log file doesn't exist, this must be the first time 185# If the old log file doesn't exist, this must be the first time
@@ -245,18 +210,24 @@ diff "$logfile" "$oldlog" | grep -v "^>" > "$tempdiff"
245 210
246 211
247if [ $ALL ]; then 212if [ $ALL ]; then
248 # Get the last matching entry in the diff file 213 # Get all matching entries in the diff file
249 entry=$($GREP "$query" "$tempdiff") 214 if [ -n "$exclude" ]; then
250 215 entry=$($GREP "$query" "$tempdiff" | $GREP -v "$exclude")
251 # Count the number of matching log entries we have 216 count=$($GREP "$query" "$tempdiff" | $GREP -vc "$exclude")
252 count=$(echo "$entry" | wc -l) 217 else
218 entry=$($GREP "$query" "$tempdiff")
219 count=$($GREP -c "$query" "$tempdiff")
220 fi
253 221
254else 222else
255 # Count the number of matching log entries we have 223 # Get the last matching entry in the diff file
256 count=$($GREP -c "$query" "$tempdiff") 224 if [ -n "$exclude" ]; then
257 225 entry=$($GREP "$query" "$tempdiff" | $GREP -v "$exclude" | tail -1)
258 # Get the last matching entry in the diff file 226 count=$($GREP "$query" "$tempdiff" | $GREP -vc "$exclude")
259 entry=$($GREP "$query" "$tempdiff" | tail -1) 227 else
228 entry=$($GREP "$query" "$tempdiff" | tail -1)
229 count=$($GREP -c "$query" "$tempdiff")
230 fi
260fi 231fi
261 232
262rm -f "$tempdiff" 233rm -f "$tempdiff"