patches for pauses between parallel RANCID runs

Ed Ravin eravin at
Tue Jun 14 16:10:58 UTC 2005

I needed to control how fast RANCID starts up jobs in parallel: when
using one-time password logins, I had multiple routers trying
to log in with the same sequence number, and only one of them could
finish logging in.

It turns out "par" already supports such a feature, but there's no easy
hook to turn it on.  So here's an addition to /etc/rancid.conf:

  # How long to pause (in seconds) between parallel RANCID runs
  # This is important when using the same S/Key account on multiple
  # routers, otherwise all the routers will receive the same  challenge
  # and only one will actually be able to log in.  Default is zero.
  # PAR_PAUSE=3; export PAR_PAUSE

And a simple patch to control_rancid, (see attached), to use that environment

I'll send in my S/Key patches in a few days, after they've proved to be
stable.  If anyone else wants to try them out, please write to me off-list.

	-- Ed
-------------- next part --------------
--- bin/control_rancid	2005-06-10 20:49:46.000000000 -0400
+++ ../rancid-panix-1/libexec/rancid/control_rancid	2005-06-14 11:35:21.000000000 -0400
@@ -89,6 +89,9 @@
 # Number of things par should run in parallel.
+# How many seconds to sleep between each run
 # Bail if we do not have the necessary info to run
 if [ ! -d $DIR ]
@@ -304,7 +307,7 @@
 # tailored to the specific installation.
 echo ""
 echo "Trying to get all of the configs."
-par -q -n $PAR_COUNT -c "rancid-fe \{}" $devlistfile
+par -q -n $PAR_COUNT -p $PAR_PAUSE -c "rancid-fe \{}" $devlistfile
 # This section will generate a list of missed routers
 # and try to grab them again.  It will run through
@@ -334,7 +337,7 @@
     if [ -f $DIR/routers.up.missed ]; then
 	echo "====================================="
 	echo "Getting missed routers: round $round."
-	par -q -n $PAR_COUNT -c "rancid-fe \{}" $DIR/routers.up.missed
+	par -q -n $PAR_COUNT -p $PAR_PAUSE -c "rancid-fe \{}" $DIR/routers.up.missed
 	rm -f $DIR/routers.up.missed
 	round=`expr $round + 1`

More information about the Rancid-discuss mailing list