[rancid] supermicro switch (again)
heasley
heas at shrubbery.net
Mon Nov 21 06:35:21 UTC 2016
Thu, Nov 17, 2016 at 02:12:31PM +0100, Marcin Dulak:
> Now, most of the posts suggest that the reason for getting "End of run not
> found" is that rancid does not recognize
> when the session to the switch is terminated. On Supermicro that seems to
> be "supermicro-switch#exit".
That is
if (!$clean_run || !$found_end) {
if !(command failure or undefined function or unexpected command or end of
session missing)
or
!(found end of the config)
> I'm trying to find out the workflow of rancid in order to make the
> adjustments:
>
> $ grep '#exit\$' usr/share/perl5/vendor_perl/rancid/*
> usr/share/perl5/vendor_perl/rancid/edgemax.pm: if (/\#exit$/) {
> usr/share/perl5/vendor_perl/rancid/foundry.pm: if (/\#exit$/) {
>
> $ grep '#exit\$' usr/libexec/rancid/*
> usr/libexec/rancid/rrancid: if (/\#exit$/) {
>
> First question: what is the purpose of usr/libexec/rancid/rrancid compared
> to the perl modules under usr/share/perl5/vendor_perl/rancid?
rancid is function used by some (eventually all) of the rancid modules.
rrancid is the redback module.
> Second question - I'm doing:
>
> $ cat etc/rancid/rancid.types.conf
> supermicro;script;rrancid
> supermicro;login;smlogin
> supermicro;inloop;edgemax::inloop
> supermicro;command;edgemax::ShowVersion;show version
>
> but I can see that there seem to be no effect due to what I write for some
> of these options, e.g. I can do without errors:
> supermicro;script;dummy
> supermicro;login;smlogin
> supermicro;inloop;dummy::inloop
>
> I would imagine something like that would be caught by rancid configuration
> parser as incorrect and prevent the run?
how would it know until it tries to import the module? I did add recently
for 3.6:
rancid.pm: check for existence of functions for given device type after
loading the modules for the type. return failure if any are missing.
> Adding debug prints to the check for completness in
> usr/libexec/rancid/rancid (also suggested in some posts) is not helpful:
> printf(STDERR "$host: missed cmd(s): all commands\n");
> printf(STDERR "$host: $clean_run\n");
> printf(STDERR "$host: $found_end\n");
>
> $ rancid -d -t supermicro supermicro-switch
> loadtype: device type supermicro
> loadtype: found device type supermicro in ./etc/rancid/rancid.types.conf
> executing smlogin -t 90 -c"show version" supermicro-switch
split it into pieces;
eval `rancid -C -t supermicro supermicro-switch` >output
make sure that works. then work on the module
rancid -d -t supermicro -f output
> supermicro-switch: missed cmd(s): all commands
> supermicro-switch: 0
> supermicro-switch: 0
> supermicro-switch: End of run not found
>
> Marcin
More information about the Rancid-discuss
mailing list