[rancid] Re: Rancid Reports Changes in router.db when nochanges have been made

Schmidt, Daniel dan.schmidt at uplinkdata.com
Tue Nov 10 20:57:17 UTC 2009


On ubuntu, it should be diff -U 4, which it is.  (lines below
accidentally from old control_rancid)

< diff -U 4 routers.up routers.up.new > /dev/null 2>&1; RUP=$?
---
> diff -u -4 routers.up routers.up.new > /dev/null 2>&1; RUP=$?

rancid at che-rancid-001:~/var/Telco1$ diff -u -4 
diff: `-4' option is obsolete; use `-U 4'
diff: Try `diff --help' for more information.

I can't seem to track this one down.   

At the command line:
sed -e '/^#/d' -e 's/^ *//' -e 's/ *$//' -e 's/ *: */:/g' router.db |
sort -u > routers.db
perl -F: -ane '{($F[0] =~ tr at A-Z@a-z@,print $_) if ($F[2] !~ /^up$/i);}'
routers.db

Gives me just one device:
FIX_DIFF_BUG:cisco:down

But the old routers.up has every device with the exception of
FIX_DIFF_BUG.  Hence, diff spits out a bunch of erroneous garbage about
stuff going up and down.  So, the question is, as my routers.all is the
former routers.all:

Why do we get a different routers.all.new depending when called from
command line as opposed to when it is called as a cron job?  Is my logic
flawed?

302 mv -f routers.all.new routers.all

-----Original Message-----
From: john heasley [mailto:heas at shrubbery.net] 
Sent: Monday, November 09, 2009 3:26 PM
To: Schmidt, Daniel
Cc: rancid-discuss at shrubbery.net
Subject: Re: [rancid] Re: Rancid Reports Changes in router.db when
nochanges have been made

Thu, Nov 05, 2009 at 03:16:42PM -0700, Schmidt, Daniel:
> What is odd is that this only seems to do this when you rancid-run
from
> the command line when the previous run was from Cron.  (or visa versa)
> Relevant code doesn't seem like much:
> 
> 182 cut -d: -f1,2 routers.db > routers.all.new
> 
> 189 perl -F: -ane '{($F[0] =~ tr at A-Z@a-z@,print "$F[0]:$F[1]\n")
> 190     if ($F[2] =~ /^up$/i);}' routers.db > routers.up.new
> 
> 192 diff -u -4 routers.up routers.up.new > /dev/null 2>&1; RUP=$?

diff is the typical problem here.  verify that the diff that you get
is one that supports these options expressed in this manner.  everywhere
but linux, diffs accepts -u4.

> 194 if [ $RALL -ne 0 -o $RDOWN -ne 0 -o $RUP -ne 0 ]
> 195 then
> 196     (
> 197         if [ $RUP -ne 0 ] ; then
> 198             if [ ! -s routers.up ] ; then
> 199                 echo Routers changed to up:
> 200                 sed -e 's/^/        /' routers.up.new
> 201                 echo
> 202             else
> 203                 WCUP=`comm -13 routers.up routers.up.new | wc -l |
\
> 204                         sed -e 's/^ *\([^ ]*\)/\1/'`
> 205                 if [ $WCUP -gt 0 ] ; then
> 206                     echo Routers changed to up:
> 
> Term is set to network in rancid.conf, so I'm stumped as to how RUP or
> WCUP is nonzero on this.
> _______________________________________________
> Rancid-discuss mailing list
> Rancid-discuss at shrubbery.net
> http://www.shrubbery.net/mailman/listinfo.cgi/rancid-discuss


More information about the Rancid-discuss mailing list