[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