[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