Benjamin Renard commited on 2015-01-07 16:19:54
              Showing 2 changed files, with 63 additions and 30 deletions.
            
| ... | ... | @@ -4,9 +4,11 @@ Nagios plugin to check Git Repository status | 
| 4 | 4 | Usage | 
| 5 | 5 | ----- | 
| 6 | 6 |  | 
| 7 | - Usage : ./check_git_config [directory] [-d] | |
| 8 | - [directory] Git root directory (default : /srv/common) | |
| 9 | - [-d] Enable debug mode | |
| 7 | + Usage : ./check_git_config -g [directory] [-c|-r remote] [-d] | |
| 8 | + -g [directory] Specify Git root directory (default : /srv/common) | |
| 9 | + -c Check Git remote state | |
| 10 | + -r [remote] Specify Git remote to check (default : origin) | |
| 11 | + -d Enable debug mode | |
| 10 | 12 |  | 
| 11 | 13 | Copyright | 
| 12 | 14 | --------- | 
| ... | ... | @@ -1,40 +1,59 @@ | 
| 1 | 1 | #!/bin/bash | 
| 2 | 2 | # | 
| 3 | -# Nagios plugin to check Postgresql streamin replication state | |
| 4 | -# | |
| 5 | -# Could be use on Master or on standby node | |
| 6 | -# | |
| 7 | -# Requirement : | |
| 8 | -# | |
| 9 | -# On master node : Slaves must be able to connect with user PG_USER | |
| 10 | -# to database postgres as trust | |
| 11 | -# | |
| 12 | -# On standby node : PG_USER must be able to connect localy as trust | |
| 3 | +# Nagios plugin to check Git repository status | |
| 13 | 4 | # | 
| 14 | 5 | # Author : Benjamin Renard <brenard@easter-eggs.com> | 
| 15 | 6 | # Date : Wed, 14 Mar 2012 14:45:55 +0000 | 
| 16 | -# Source : http://git.zionetrix.net/check_pg_streaming_replication | |
| 7 | +# Source : http://git.zionetrix.net/check_git_config | |
| 17 | 8 | # | 
| 18 | 9 |  | 
| 19 | 10 | GIT_ROOT=/srv/common | 
| 11 | +GIT_REMOTE=origin | |
| 12 | +DEBUG=0 | |
| 13 | +CHECK_REMOTE=0 | |
| 20 | 14 |  | 
| 21 | -if [ "$1" == "-h" ] | |
| 22 | -then | |
| 23 | - echo "Usage : $0 [directory] [-d] | |
| 24 | - [directory] Git root directory (default : $GIT_ROOT) | |
| 25 | - [-d] Enable debug mode" | |
| 15 | +function usage() { | |
| 16 | + echo "Usage : $0 -g [directory] [-c|-r remote] [-d] | |
| 17 | + -g [directory] Specify Git root directory (default : $GIT_ROOT) | |
| 18 | + -c Check Git remote state | |
| 19 | + -r [remote] Specify Git remote to check (default : $GIT_REMOTE) | |
| 20 | + -d Enable debug mode" | |
| 21 | +} | |
| 22 | + | |
| 23 | +while getopts "g:r:cdh-:" OPTION | |
| 24 | +do | |
| 25 | + case "$OPTION" in | |
| 26 | + c) | |
| 27 | + CHECK_REMOTE=1 | |
| 28 | + ;; | |
| 29 | + g) | |
| 30 | +			GIT_ROOT="${OPTARG}" | |
| 31 | + ;; | |
| 32 | + r) | |
| 33 | + CHECK_REMOTE=1 | |
| 34 | +			GIT_REMOTE="${OPTARG}" | |
| 35 | + ;; | |
| 36 | + d) | |
| 37 | + DEBUG=1 | |
| 38 | + ;; | |
| 39 | + h) | |
| 40 | + usage | |
| 26 | 41 | exit 0 | 
| 27 | -fi | |
| 42 | + ;; | |
| 43 | + *) | |
| 44 | + echo "Invalid parameter -$OPTION" | |
| 45 | + echo | |
| 46 | + usage | |
| 47 | + exit 1 | |
| 48 | + ;; | |
| 49 | + esac | |
| 50 | +done | |
| 28 | 51 |  | 
| 29 | -[ -n "$1" -a "$1" != "-d" ] && GIT_ROOT="$1" | |
| 30 | 52 | [ ! -d "$GIT_ROOT" ] && echo "UNKNOWN : Git root directory does not exists !" && exit 3 | 
| 31 | 53 | [ ! -d "$GIT_ROOT/.git" ] && echo "UNKNOWN : Git root directory seem to not being a git repository." && exit 3 | 
| 32 | 54 |  | 
| 33 | 55 | cd $GIT_ROOT | 
| 34 | 56 |  | 
| 35 | -DEBUG=0 | |
| 36 | -[ "$1" == "-d" -o "$2" == "-d" ] && DEBUG=1 | |
| 37 | - | |
| 38 | 57 | STATUS=$( git status -s ) | 
| 39 | 58 |  | 
| 40 | 59 | [ $DEBUG -eq 1 ] && echo -e "Status : $STATUS" | 
| ... | ... | @@ -43,11 +62,24 @@ if [ -n "$STATUS" ] | 
| 43 | 62 | then | 
| 44 | 63 | echo "WARNING : Git config repo on $( hostname ) not clean" | 
| 45 | 64 | exit 1 | 
| 46 | -else | |
| 65 | +elif [ $CHECK_REMOTE -eq 1 ] | |
| 66 | +then | |
| 67 | + # Check remote exists | |
| 68 | + [ $DEBUG -eq 1 ] && echo -n "Check remote '$GIT_REMOTE' exist : " | |
| 69 | + git remote show "$GIT_REMOTE" > /dev/null 2>&1 | |
| 70 | + res=$? | |
| 71 | + [ $DEBUG -eq 1 ] && echo "done. (Return $res)" | |
| 72 | + | |
| 73 | + if [ $res -ne 0 ] | |
| 74 | + then | |
| 75 | + echo "UNKNOWN : Unkown remote '$GIT_REMOTE'" | |
| 76 | + exit 3 | |
| 77 | + fi | |
| 78 | + | |
| 47 | 79 | [ $DEBUG -eq 1 ] && echo -n "Fecth : " | 
| 48 | - git fetch > /dev/null 2>&1 | |
| 80 | + git fetch "$GIT_REMOTE" > /dev/null 2>&1 | |
| 49 | 81 | res=$? | 
| 50 | - [ $DEBUG -eq 1 ] && echo "done. (Return $?)" | |
| 82 | + [ $DEBUG -eq 1 ] && echo "done. (Return $res)" | |
| 51 | 83 |  | 
| 52 | 84 | if [ $res -ne 0 ] | 
| 53 | 85 | then | 
| ... | ... | @@ -65,8 +97,7 @@ else | 
| 65 | 97 | then | 
| 66 | 98 | echo "CRITICAL : Git config not uptodate" | 
| 67 | 99 | exit 2 | 
| 68 | - else | |
| 69 | - echo "OK" | |
| 70 | - exit 0 | |
| 71 | 100 | fi | 
| 72 | 101 | fi | 
| 102 | +echo "OK" | |
| 103 | +exit 0 | |
| 73 | 104 |