On Mon, 11 Dec 2023, heasley wrote:

right, so when it returns, the 'exit' line should be re-evaluated in the
top loop and clean_run will be set.  There is some nuance, but all the
other filter functions operate in the same manner.

    94 TOP: while(<$INPUT>) {
        ...
   102         while (/[>#]\s*($cmds_regexp)\s*$/) {
   121             $rval = &{$commands{$cmd}}($INPUT, $OUTPUT, $cmd);
   122             delete($commands{$cmd});
        ...
   127         }
   128         if (/[>#]\s?exit$/) {  <<<<<<<<<<<<<<<<
   129             $clean_run = 1;
   130             last;
   131         }
   132     }
   133 }

That's interesting. The rancid 3.13 I have from the Ubuntu rancid 3.13-1 package has that line 128 if statement up above the while loop that starts at line 102. So, this was fixed a couple of years ago.

https://github.com/haussli/rancid/commit/f9c6dc261803a1340286d57ef4b16ac8900f7053

Now that I look, I see the Ubuntu (Debian?) rancid 3.13 package is based on at least a 3 year old snapshot of rancid. Is there any point in using such a package? It seems like we'd be far better off just using the latest from github, doing a configure and make install?

Backporting that change does resolve the WriteTerm function not setting $clean_run issue. I still need this little tweak or something similar to deal with the no obvious end of config issue.

@@ -2787,7 +2804,7 @@
     # The ContentEngine lacks a definitive "end of config" marker.  If we
     # know that it is a CE, SAN, or NXOS and we have seen at least 5 lines
     # of write term output, we can be reasonably sure that we have the config.
-    if (($type eq "CE" || $type eq "SAN" || $type eq "NXOS") && $linecnt > 5) {
+    if (($type eq "CE" || $type eq "SAN" || $type eq "NXOS" || $devtype eq "axos") 
&& $linecnt > 5) {
        $found_end = 1;
        return(0);
     }

One solution I'd tested was

TOP:
        tr/\015//d;
+       if (/^$prompt\s?exit/ && $devtype eq "axos" && $linecnt > 5) {
+         $found_end = 1;
+         $clean_run = 1;
+         return(0);

----------------------------------------------------------------------
 Jon Lewis, MCP :)              |  I route
 Blue Stream Fiber, Sr. Neteng  |  therefore you are
_________ http://www.lewis.org/~jlewis/pgp for PGP public key_________

_______________________________________________
Rancid-discuss mailing list
[email protected]
https://www.shrubbery.net/mailman/listinfo/rancid-discuss

Reply via email to