[rancid] clogin can't login to more then one router.

Per-Olof Olsson peo at chalmers.se
Thu May 8 05:35:47 UTC 2014


Thanks.

Now added your patch and it works nice.
Better to rewrite, then just add one more fast fix.

/Peo

On 05/06/2014 01:06 AM, heasley wrote:
> Mon, May 05, 2014 at 07:40:06AM +0200, Per-Olof Olsson:
>>
>> clogin only work if one router is listed at command line.
>> (rancid 2.3.8 and 3.0 tested)
>>
>> clogin -c "show term" router1 router2
>>
>> output for second router:
>> --------------------------
>> 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 759)
>> ----------------------------
>>
>> Possible more settings need to be reset before login to each router.
>> Got it to work for my settings, by moving "set enable 0" inside foreach loop.
>>
> 
> I think you misread the error msg.  this seems like a better fix, and yet
> still somewhat lacking, in the sense that autoenable should just go away,
> eventually.  look good?
> 
> Index: bin/clogin.in
> ===================================================================
> --- bin/clogin.in	(revision 2838)
> +++ bin/clogin.in	(working copy)
> @@ -750,7 +750,6 @@
>  set in_proc 0
>  set exitval 0
>  set prompt_match ""
> -set enable 0
>  foreach router [lrange $argv $i end] {
>      set router [string tolower $router]
>      # attempt at platform switching.
> @@ -769,9 +768,23 @@
>  	set prompt "(>|#| \\(enable\\))"
>      }
>  
> -    # look for noenable option in .cloginrc
> -    if { [find noenable $router] == "1" } {
> +    # look for autoenable option in .cloginrc & cmd-line
> +    set ae [find autoenable $router]
> +    if { "$ae" == "1" || $avautoenable } {
> +	set autoenable 1
> +    } else {
> +	set autoenable 0
> +    }
> +    # look for enable options in .cloginrc & cmd-line
> +    if { $avenable == 0 } {
>  	set enable 0
> +    } else {
> +	set ne [find noenable $router]
> +	if { "$ne" == "1" || "$autoenable" == "1" } {
> +	    set enable 0
> +	} else {
> +	    set enable 1
> +	}
>      }
>  
>      # Figure out passwords
> @@ -882,18 +895,6 @@
>      # Figure out the prompt.
>      if { [regexp -- "(#| \\(enable\\))" $prompt_match junk] == 1 } {
>  	set enable 0
> -    } else {
> -	if { $avenable == 0 } {
> -	    set enable 0
> -	} else {
> -	    set ne [find noenable $router]
> -	    set ae [find autoenable $router]
> -	    if { "$ne" == "1" || "$ae" == "1" || $avautoenable } {
> -		set enable 0
> -	    } else {
> -		set enable 1
> -	    }
> -	}
>      }
>      if { $enable } {
>  	if {[do_enable $enauser $enapasswd]} {
> 





More information about the Rancid-discuss mailing list