Re: [rancid] Prompt detection eats exit, clean run not found

2018-01-05 Thread heasley
Fri, Jan 05, 2018 at 09:40:28AM -0600, Brandon Ewing:
> It appears that several modules for rancid rely on non-prompt exits from
> specific commands (IE, "end" at the end of WriteTerm) to ensure that the
> "exit" string is available for inloop to detect to mark a clean run.
> 
> Devices that do not have an end marker, or custom types that do not have
> WriteTerm last, have to fall back on prompt detection, which in most
> modules, also swallows the "exit" string.
> 
> It appears this is fixed in aeos.pm with a GOTO CMD statement, but that
> doesn't appear standard in other modules.

right, if $_ has a prompt, evaluate it, dont read another line.

if (defined($prompt)) {
if (/$prompt/) {
goto CMD;
}
}

> You can reproduce this error by defining a custom type:
> 
> test;script;rancid -t test
> test;login;clogin
> test;module;ios
> test;inloop;ios::inloop
> test;command;ios::WriteTerm;show running-config
> test;command;ios::ShowVersion;show version
> 
> rancid -dt test ios
> loadtype: device type test
> loadtype: found device type test in /home/bewing/etc/rancid.types.conf
> executing clogin -t 90 -c"show running-config;show version" ios
> PROMPT MATCH: ios#
> HIT COMMAND:ios#show running-config
> In WriteTerm: ios#show running-config
> HIT COMMAND:ios#show version
> In ShowVersion: ios#show version
> TYPE = WS-C3850-48U

thats ios, it should have and eng marker; if it does not, then its broken.
and, ios devices and others do this from time to time; they leak memory
until they have so little free that they can not produce a full human-
display config, then they just truncate it.  others produce no output, but
indicate success or lack an error.  hence, the checks.


> ios: End of run not found
> ios: clean_run is false
> !BOOTLDR: Version 3.58, RELEASE SOFTWARE (P)
> 
> 
> -- 
> Brandon Ewing (nicot...@warningg.com)



> ___
> Rancid-discuss mailing list
> Rancid-discuss@shrubbery.net
> http://www.shrubbery.net/mailman/listinfo/rancid-discuss

___
Rancid-discuss mailing list
Rancid-discuss@shrubbery.net
http://www.shrubbery.net/mailman/listinfo/rancid-discuss


[rancid] Prompt detection eats exit, clean run not found

2018-01-05 Thread Brandon Ewing
It appears that several modules for rancid rely on non-prompt exits from
specific commands (IE, "end" at the end of WriteTerm) to ensure that the
"exit" string is available for inloop to detect to mark a clean run.

Devices that do not have an end marker, or custom types that do not have
WriteTerm last, have to fall back on prompt detection, which in most
modules, also swallows the "exit" string.

It appears this is fixed in aeos.pm with a GOTO CMD statement, but that
doesn't appear standard in other modules.

You can reproduce this error by defining a custom type:

test;script;rancid -t test
test;login;clogin
test;module;ios
test;inloop;ios::inloop
test;command;ios::WriteTerm;show running-config
test;command;ios::ShowVersion;show version

rancid -dt test ios
loadtype: device type test
loadtype: found device type test in /home/bewing/etc/rancid.types.conf
executing clogin -t 90 -c"show running-config;show version" ios
PROMPT MATCH: ios#
HIT COMMAND:ios#show running-config
In WriteTerm: ios#show running-config
HIT COMMAND:ios#show version
In ShowVersion: ios#show version
TYPE = WS-C3850-48U
ios: End of run not found
ios: clean_run is false
!BOOTLDR: Version 3.58, RELEASE SOFTWARE (P)


-- 
Brandon Ewing (nicot...@warningg.com)


pgp06_ivksIiK.pgp
Description: PGP signature
___
Rancid-discuss mailing list
Rancid-discuss@shrubbery.net
http://www.shrubbery.net/mailman/listinfo/rancid-discuss