Advertisement
danielhilst

check_nt-collectd.sh

Oct 1st, 2012
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.77 KB | None | 0 0
  1. #!/bin/bash
  2. # Desc: Collectd's plugin script
  3. # Calls check_nt nagios plugin and parse it's output with
  4. # userdefine `perl -lape' program... and submit the parsed output
  5. # with echo "PUTVAL @HOSTNAME@/@PLUGIN@/@INSTANCE@ INTERVAL=$INTERVAL N:$OUTPUT
  6. # @XXX@ are command line arguments
  7. # $XXX are values computed at run time
  8.  
  9. LOGFILE=/dev/null
  10.  
  11.  
  12. log() {
  13.     echo $(date) $* >> $LOGFILE
  14. }
  15.  
  16. log "Called as $0 $*"
  17.  
  18. PERL=/usr/bin/perl
  19. HOSTNAME=$1
  20. shift
  21. PLUGIN_NAME=$1
  22. shift
  23. INSTANCE=$1
  24. shift
  25. HOSTADDR=$1
  26. shift
  27. PORT=$1
  28. shift
  29. VARIABLE=$1
  30. shift
  31. PERL_REGEX_PROGRAM=$1
  32. shift
  33.  
  34. PLUGINS_DIR=/usr/lib/nagios/plugins
  35. INTERVAL=10
  36.  
  37. usage() {
  38.     echo "$0: <HOSTNAME> <PLUGIN_NAME> <INSTANCE> <HOSTADDR> <PORT> <VARIABLE> <PERL_REGEX_PROGRAM> <ARGUMENTS TO BE PASSED DO check_nt AS \$*>"
  39. }
  40.  
  41. get_output() {
  42.     OUTPUT=$($PLUGINS_DIR/check_nt -H $HOSTADDR -p $PORT -v $VARIABLE $*)
  43.     log "get_output returns: $OUTPUT"
  44.     echo "$OUTPUT"
  45. }
  46.  
  47. parse_output() {
  48.     OUTPUT=$(get_output $*)
  49.     PARSED_OUTPUT=$(echo $OUTPUT | $PERL -lape "$PERL_REGEX_PROGRAM")
  50.     log "parse_output with \"$PERL_REGEX_PROGRAM\" returns: \"$PARSED_OUTPUT\""
  51.     if test -z $PARSED_OUTPUT; then
  52.     echo "Can't parse output \"$OUTPUT\" with \"$PERL_REGEX_PROGRAM\""
  53.     log "Can't parse output \"$OUTPUT\" with \"$PERL_REGEX_PROGRAM\""
  54.     exit 1
  55.     fi
  56.     echo $PARSED_OUTPUT
  57. }
  58.  
  59.  
  60. if test -z "$HOSTNAME" -o -z "$HOSTADDR" -o -z "$PORT" -o \
  61.         -z "$PLUGIN_NAME" -o -z "$VARIABLE" -o -z "$PERL_REGEX_PROGRAM"; then
  62.     usage
  63.     exit 0
  64. fi
  65.  
  66. while :; do
  67.     VALUE=$(parse_output $*)
  68.     SUBMIT="PUTVAL \"$HOSTNAME/$PLUGIN_NAME/$INSTANCE\" interval=$INTERVAL N:$VALUE"
  69.     log "Submitting: $SUBMIT"
  70.     echo $SUBMIT
  71.     sleep $INTERVAL
  72. done
  73.  
  74.  
  75. exit 1 # This should never happen
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement