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 |