diff options
Diffstat (limited to 'bin/control_rancid.in')
-rwxr-xr-x | bin/control_rancid.in | 75 |
1 files changed, 51 insertions, 24 deletions
diff --git a/bin/control_rancid.in b/bin/control_rancid.in index dc453a0..42f14ae 100755 --- a/bin/control_rancid.in +++ b/bin/control_rancid.in @@ -131,12 +131,12 @@ fi # generate the list of all, up, & down routers cd $DIR trap 'rm -fr routers.db routers.all.new routers.down.new routers.up.new \ - $TMP;' 1 2 15 + routers.mail routers.added routers.deleted $TMP;' 1 2 15 grep -v '^#' router.db > routers.db cut -d: -f1,2 routers.db | sort -u > routers.all.new if [ ! -f routers.all ] ; then touch routers.all; fi diff routers.all routers.all.new > /dev/null 2>&1; RALL=$? -@PERLV@ -F: -ane '{($F[0] =~ tr@A-Z@a-z@,print join(":", @F)."\n") +@PERLV@ -F: -ane '{($F[0] =~ tr@A-Z@a-z@,print $_) if ($F[2] !~ /^up$/i);}' routers.db | sort -u > routers.down.new if [ ! -f routers.down ] ; then touch routers.down; fi diff routers.down routers.down.new > /dev/null 2>&1; RDOWN=$? @@ -149,32 +149,59 @@ if [ $RALL -ne 0 -o $RDOWN -ne 0 -o $RUP -ne 0 ] then ( if [ $RUP -ne 0 ] ; then - if [ $RUP -eq 1 ] ; then - echo Routers changed to up: - comm -13 routers.up routers.up.new | sed -e 's/^/ /' - echo - elif [ -s routers.up.new ] ; then - echo Routers changed to up: - sed -e 's/^/ /' routers.up.new - echo + if [ ! -s routers.up ] ; then + echo Routers changed to up: + sed -e 's/^/ /' routers.up.new + echo + else + WCUP=`comm -13 routers.up routers.up.new | wc -l | \ + sed -e 's/^ *\([^ ]*\)/\1/'` + if [ $WCUP -gt 0 ] ; then + echo Routers changed to up: + comm -13 routers.up routers.up.new | sed -e 's/^/ /' + echo + fi fi fi if [ $RDOWN -ne 0 ] ; then - if [ $RDOWN -eq 1 ] ; then - echo Routers changed to down: - comm -13 routers.down routers.down.new | sed -e 's/^/ /' - echo - elif [ -s routers.down.new ] ; then - echo Routers changed to down: - sed -e 's/^/ /' routers.down.new - echo + if [ ! -s routers.down ] ; then + echo Routers changed to down: + sed -e 's/^/ /' routers.down.new + echo + else + WCDOWN=`comm -13 routers.down routers.down.new | wc -l | \ + sed -e 's/^ *\([^ ]*\)/\1/'` + if [ $WCDOWN -eq 1 ] ; then + echo Routers changed to down: + comm -13 routers.down routers.down.new | \ + sed -e 's/^/ /' + echo + fi fi fi - WC=`wc -l routers.all | sed -e 's/^ *\([^ ]*\) .*$/\1/'` - WCNEW=`wc -l routers.all.new | sed -e 's/^ *\([^ ]*\) .*$/\1/'` - if [ $RALL -eq 1 -a $WC -gt $WCNEW ] ; then - echo Deleted routers: - comm -23 routers.all routers.all.new | sed -e 's/^/ /' + if [ $RALL -eq 1 ] ; then + comm -13 routers.all routers.all.new | sed -e 's/^/ /' \ + > routers.added + comm -23 routers.all routers.all.new | sed -e 's/^/ /' \ + > routers.deleted + + WCADDED=`wc -l routers.added | sed -e 's/^ *\([^ ]*\) .*$/\1/'` + WCDELETED=`wc -l routers.deleted | sed -e 's/^ *\([^ ]*\) .*$/\1/'` + + if [ $WCADDED -gt 0 ] + then + echo Added routers: + cat routers.added + echo + fi + if [ $WCDELETED -gt 0 ] + then + echo Deleted routers: + cat routers.deleted + echo + fi + + rm -f routers.added routers.deleted fi ) > routers.mail @@ -224,8 +251,8 @@ for router in `cut -d: -f1 ../routers.up` ; do cvs add -ko $router echo "CVS added missing router $router" fi - echo done +echo # cvs delete configs for routers not listed in routers.up. for router in `find . \( -name \*.new -prune -o -name CVS -prune \) -o -type f -print | sed -e 's/^.\///'` ; do grep -i "^$router:" ../router.db > /dev/null 2>&1 |