Don't extract ._* and . from tests archive
[nagcollect.git] / client / bin / nagcollect
1 #!/bin/bash
2 #
3 # NagCollect -- Nagios Data Collector for Passive Checks
4 # Copyright (c)2009 Alexander Barton, alex@barton.de
5 #
6
7 NAME=`basename "$0"`
8 MAXTIME=300
9
10 function Msg()
11 {
12         echo $*
13 }
14
15 function Error()
16 {
17         logger -t "$NAME" "$*"
18         echo $*
19         exit 1
20 }
21
22 function refreshTestScripts()
23 {
24         tmp=`mktemp /tmp/nagcollect.XXXXXX`
25         Msg "Downloading scripts from ${SERVER_URL} ..."
26         curl --insecure --fail --output "$tmp" --silent --max-time $MAXTIME \
27                 "${SERVER_URL}/nagcollecttestscripts.tgz" ; r=$?
28         if [ $r -eq 0 ]; then
29                 # Update local test scripts
30                 Msg "Extracting scripts ..."
31                 mkdir -p /usr/local/lib/nagcollect
32                 tar xzf "$tmp" -C /usr/local/lib/nagcollect --exclude "._*" --exclude "." ; r=$?
33         fi
34         rm -f "$tmp"
35         return $r
36 }
37
38 function submitService()
39 {
40         curl --insecure --fail --output /dev/null --silent --max-time $MAXTIME \
41                 --data "key=$CLIENT_KEY" \
42                 --data "host=$CLIENT_ID" \
43                 --data "service=$1" \
44                 --data "status=$2" \
45                 --data "text=$3" \
46                 "${SERVER_URL}/nagcollect.php" ; r=$?
47         return $r
48 }
49
50 [ -r "/usr/local/etc/nagcollect.conf" ] && . /usr/local/etc/nagcollect.conf
51 [ -r "/etc/nagcollect.conf" ] && . /etc/nagcollect.conf
52
53 [ -n "$SERVER_URL" -a -n "$CLIENT_KEY" -a -n "$CLIENT_ID" ] || \
54         Error "Configuration invalid, check SERVER_URL, CLIENT_KEY and CLIENT_ID variables!"
55
56 if [ "$AUTOUPDATE" = 1 ]; then
57         Msg "Updating local test scripts:"
58         refreshTestScripts || \
59                 Error "Failed to refresh test scripts from \"$SERVER_URL\" ($?)!"
60 fi
61
62 Msg "Running test scripts:"
63
64 ls -1 \
65         /usr/local/lib/nagcollect/*.tst \
66         /usr/local/lib/nagcollect/`uname`/*.tst \
67  2>/dev/null | while read tst; do
68         [ -r "$tst" ] || continue
69         SERVICE=""; STATUS=""; TEXT=""
70         Msg "Checking \"$tst\" ..."
71         . "$tst"
72         [ -n "$SERVICE" -a -n "$STATUS" ] || continue
73         submitService "$SERVICE" "$STATUS" "$TEXT"
74         Msg "RESULT: $SERVICE=$STATUS \"$TEXT\" ($?)"
75 done
76
77 # -eof-