[rancid] rancid 2.3.6: clogin with multiple devices fails... ($autologin not defined)
Lee
ler762 at gmail.com
Sat Sep 10 02:01:20 UTC 2011
On 9/6/11, P C <pc50000 at gmail.com> wrote:
> Has any determined the best solution for this?
I don't know if it's "best" but it's probably "easiest"
OK, how 'bout a proposed fix? Starting at my line 756 in clogin it's:
set enable 0
foreach router [lrange $argv $i end] {
set router [string tolower $router]
# attempt at platform switching.
Fix is to move the "set enable 0" line after the "foreach router [..." line.
Can you try it & report back if it works or not for you?
Regards,
Lee
> I just upgraded from
> version 2.3.1_3 to 2.3.6 and now I'm having this problem too.
>
> I used to do clogin -c "show inventory" `cat all_routers.txt` and it
> would return said command for the routers listed in all_routers.txt,
> with one router entry per line.
>
> Now, the first routers runs fine, but each subsequent one gives this:
>
> can't read "autoenable": no such variable
> while executing
> "if { $enable && $do_enapasswd && $autoenable == 0 && [llength $pswd] < 2 }
> {
> send_user -- "\nError: no enable password for $router in
> $password_file...."
> ("foreach" body line 28)
> invoked from within
> "foreach router [lrange $argv $i end] {
> set router [string tolower $router]
> # attempt at platform switching.
> set platform ""
> send_user ..."
> (file "/usr/local/rancid/bin/clogin" line 743)
>
>
> On Wed, Jul 13, 2011 at 6:57 PM, Jon Peatfield
> <J.S.Peatfield at damtp.cam.ac.uk> wrote:
>> On Wed, 13 Jul 2011, Lee wrote:
>>
>>>> I can see a number of possible fixes to the current clogin code but
>>>> would
>>>> prefer an expert to take a look at it...
>>>
>>> ... crickets ...
>>>
>>> OK, how 'bout a proposed fix? Starting at my line 756 in clogin it's:
>>> set enable 0
>>> foreach router [lrange $argv $i end] {
>>> set router [string tolower $router]
>>> # attempt at platform switching.
>>>
>>> Fix is to move the "set enable 0" line after the "foreach router [..."
>>> line.
>>
>> Which does seem to fix it, or at least hide the underlying problems...
>>
>> My worry is that the code is testing $enable in the loop before it can be
>> set other than to 0, so either the testing of $enable code is wrong, or it
>> really is intended to be the value of $enable from the *previous* time
>> round
>> the loop, in which case the fix may break something subtle...
>>
>> Then there is the use of $autoenable itself, which I assume was left when
>> the variable was renamed, but it isn't obvious (to me) if that should be
>> $avautoenable or $ae since I don't understand what the test is meant to be
>> doing...
>>
>> So we have (in the unfixed 2.3.6):
>>
>> ...
>> set enable 0
>> foreach router [lrange $argv $i end] {
>> ...
>> # look for noenable option in .cloginrc
>> if { [find noenable $router] == "1" } {
>> set enable 0
>> }
>> ...
>> if { $enable && $do_enapasswd && $autoenable == 0 && [llength $pswd]
>> <
>> 2 } {
>> send_user -- "\nError: no enable password for $router in
>> $password_file.\n"
>> continue
>> }
>> ...
>> <things which set enable and tests of it>
>> ...
>> }
>>
>> so maybe that test of $enable just needs to be moved after the places
>> where
>> enable is set...
>>
>> I clearly don't understand the code.
>>
>> -- Jon
>> _______________________________________________
>> 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