Re: [rancid] clogin commenting script commands following multiple blanks lines
Wed, Oct 24, 2018 at 09:19:31PM +, heasley: > I missed that in your example, but noticed it in testing...after I sent that > patch. This is my final patch, i think. I havent committed it yet, as I > want to review it once more. ok; committed. Either the alpha tarball or the svn repo. Welcome testers, esp for palo alto, of which I have none. ___ Rancid-discuss mailing list Rancid-discuss@shrubbery.net http://www.shrubbery.net/mailman/listinfo/rancid-discuss
Re: [rancid] clogin commenting script commands following multiple blanks lines
Wed, Oct 24, 2018 at 04:43:41PM -0400, Erik Muller: > On 10/24/18 13:28 , heasley wrote: > > Sat, Sep 29, 2018 at 03:19:00PM -0700, Erik Muller: > >> So here's an odd thing I just ran across. Running clogin with a script > >> with multiple blank lines has some very unexpected behaviour. It looks > >> like it's turning \n\n into \n;, with the net effect of commenting out any > >> command that follows two blank lines. Reproducible on ubuntu 12.04 and > >> OSX 10.13 with stock 3.8 source. Works as expected in 2.3.8 ubuntu > >> packages. > >> > >> The culprit is definitely in the "# handle escaped ;s in commands, and ;; > >> and ^;" section of clogin (rolling that block back to what was in 2.3.8 > >> fixes it), but trying to grok that in expect language to provide a real > >> fix makes my head hurt, so I'll leave this as a bug report. Examples > >> below. > >> > >> thanks, > >> -e > > > > I believe that patch addresses this bug. > > > That definitely fixes the blanks-may-comment-the-next-line issue, though it > looks like it also breaks handling of escaped ;s as well. > > before: > $ clogin-3.8 -c 'sh ip bgp nei | inc 1\; ; show ver | inc ^Model Num' fl1-as01 > ... > fl1-as01#sh ip bgp nei | inc 1; > Route to peer address reachability Up: 1; Down: 0 > Connections established 1; dropped 0 > > > with patch: > $ clogin -c 'sh ip bgp nei | inc 1\; ; show ver | inc ^Model Num' fl1-as01 > ... > fl1-as01#sh ip bgp nei | inc 1 > BGP neighbor is x.x.x.x, remote AS 42, external link > > > > And it seems to eat leading semicolon comments as well: > > $ cat ~/clogin-blanks-test2 > show bridge > ; just a comment > $ clogin -x ~/clogin-blanks-test2 fl1-as01.polaris.corp > ... > fl1-as01#show bridge > fl1-as01# > fl1-as01# > fl1-as01# > fl1-as01# just a comment > ^ > % Invalid input detected at '^' marker. > I missed that in your example, but noticed it in testing...after I sent that patch. This is my final patch, i think. I havent committed it yet, as I want to review it once more. Index: bin/clogin.in === --- bin/clogin.in (revision 3909) +++ bin/clogin.in (working copy) @@ -76,11 +76,12 @@ } # handle escaped ;s in commands, and ;; and ^; - regsub -all {([^\\]);;} $command "\\1;\u002;" esccommand - regsub {^;} $esccommand "\u002;" command - set sep "\\1\u001" - regsub -all {([^\\])\;} $command "$sep" esccommand - set sep "\u001" + regsub -all {([^\\]);} $command "\\1\u002;" esccommand + regsub -all {([^\\]);;} $esccommand "\\1;\u002;" command + regsub {^;} $command "\u002;" esccommand + regsub -all {[\\];} $esccommand ";" command + regsub -all {\u002;} $command "\u002" esccommand + set sep "\u002;" set commands [split $esccommand $sep] set num_commands [llength $commands] set rshfail 0 @@ -373,11 +374,12 @@ log_user 0 # handle escaped ;s in commands, and ;; and ^; -regsub -all {([^\\]);;} $command "\\1;\u002;" esccommand -regsub {^;} $esccommand "\u002;" command -set sep "\\1\u001" -regsub -all {([^\\])\;} $command "$sep" esccommand -set sep "\u001" +regsub -all {([^\\]);} $command "\\1\u002;" esccommand +regsub -all {([^\\]);;} $esccommand "\\1;\u002;" command +regsub {^;} $command "\u002;" esccommand +regsub -all {[\\];} $esccommand ";" command +regsub -all {\u002;} $command "\u002" esccommand +set sep "\u002" set commands [split $esccommand $sep] set num_commands [llength $commands] # the pager can not be turned off on the PIX, so we have to look @@ -384,11 +386,7 @@ # for the "More" prompt. the extreme is equally obnoxious in pre-12.3 XOS, # with a global switch in the config. for {set i 0} {$i < $num_commands} { incr i} { - if { [lindex $commands $i] == "\u002" } { - send -- "\r" - } else { - send -- "[subst -nocommands [lindex $commands $i]]\r" - } + send -h -- "[subst -nocommands [lindex $commands $i]]\r" expect { -re "^\b+" { exp_continue } -re "^\[^\n\r *]*$reprompt" { send_user -- "$expect_out(buffer)" ___ Rancid-discuss mailing list Rancid-discuss@shrubbery.net http://www.shrubbery.net/mailman/listinfo/rancid-discuss
Re: [rancid] clogin commenting script commands following multiple blanks lines
On 10/24/18 13:28 , heasley wrote: > Sat, Sep 29, 2018 at 03:19:00PM -0700, Erik Muller: >> So here's an odd thing I just ran across. Running clogin with a script with >> multiple blank lines has some very unexpected behaviour. It looks like it's >> turning \n\n into \n;, with the net effect of commenting out any command >> that follows two blank lines. Reproducible on ubuntu 12.04 and OSX 10.13 >> with stock 3.8 source. Works as expected in 2.3.8 ubuntu packages. >> >> The culprit is definitely in the "# handle escaped ;s in commands, and ;; >> and ^;" section of clogin (rolling that block back to what was in 2.3.8 >> fixes it), but trying to grok that in expect language to provide a real fix >> makes my head hurt, so I'll leave this as a bug report. Examples below. >> >> thanks, >> -e > > I believe that patch addresses this bug. That definitely fixes the blanks-may-comment-the-next-line issue, though it looks like it also breaks handling of escaped ;s as well. before: $ clogin-3.8 -c 'sh ip bgp nei | inc 1\; ; show ver | inc ^Model Num' fl1-as01 ... fl1-as01#sh ip bgp nei | inc 1; Route to peer address reachability Up: 1; Down: 0 Connections established 1; dropped 0 with patch: $ clogin -c 'sh ip bgp nei | inc 1\; ; show ver | inc ^Model Num' fl1-as01 ... fl1-as01#sh ip bgp nei | inc 1 BGP neighbor is x.x.x.x, remote AS 42, external link And it seems to eat leading semicolon comments as well: $ cat ~/clogin-blanks-test2 show bridge ; just a comment $ clogin -x ~/clogin-blanks-test2 fl1-as01.polaris.corp ... fl1-as01#show bridge fl1-as01# fl1-as01# fl1-as01# fl1-as01# just a comment ^ % Invalid input detected at '^' marker. ___ Rancid-discuss mailing list Rancid-discuss@shrubbery.net http://www.shrubbery.net/mailman/listinfo/rancid-discuss
Re: [rancid] clogin commenting script commands following multiple blanks lines
Sat, Sep 29, 2018 at 03:19:00PM -0700, Erik Muller: > So here's an odd thing I just ran across. Running clogin with a script with > multiple blank lines has some very unexpected behaviour. It looks like it's > turning \n\n into \n;, with the net effect of commenting out any command that > follows two blank lines. Reproducible on ubuntu 12.04 and OSX 10.13 with > stock 3.8 source. Works as expected in 2.3.8 ubuntu packages. > > The culprit is definitely in the "# handle escaped ;s in commands, and ;; and > ^;" section of clogin (rolling that block back to what was in 2.3.8 fixes > it), but trying to grok that in expect language to provide a real fix makes > my head hurt, so I'll leave this as a bug report. Examples below. > > thanks, > -e I believe that patch addresses this bug. Index: bin/clogin.in === --- bin/clogin.in (revision 3909) +++ bin/clogin.in (working copy) @@ -76,12 +76,12 @@ } # handle escaped ;s in commands, and ;; and ^; - regsub -all {([^\\]);;} $command "\\1;\u002;" esccommand - regsub {^;} $esccommand "\u002;" command - set sep "\\1\u001" - regsub -all {([^\\])\;} $command "$sep" esccommand - set sep "\u001" - set commands [split $esccommand $sep] + regsub -all {([^\\]);} $command "\\1\u002;" esccommand + regsub -all {([^\\]);;} $esccommand "\\1;\u002;" command + regsub {^;} $command "\u002;" esccommand + regsub -all {[\\];} $esccommand ";" command + set sep "\u002;" + set commands [split $command $sep] set num_commands [llength $commands] set rshfail 0 for {set i 0} {$i < $num_commands && !$rshfail} { incr i} { @@ -373,12 +373,12 @@ log_user 0 # handle escaped ;s in commands, and ;; and ^; -regsub -all {([^\\]);;} $command "\\1;\u002;" esccommand -regsub {^;} $esccommand "\u002;" command -set sep "\\1\u001" -regsub -all {([^\\])\;} $command "$sep" esccommand -set sep "\u001" -set commands [split $esccommand $sep] +regsub -all {([^\\]);} $command "\\1\u002;" esccommand +regsub -all {([^\\]);;} $esccommand "\\1;\u002;" command +regsub {^;} $command "\u002;" esccommand +regsub -all {[\\];} $esccommand ";" command +set sep "\u002;" +set commands [split $command $sep] set num_commands [llength $commands] # the pager can not be turned off on the PIX, so we have to look # for the "More" prompt. the extreme is equally obnoxious in pre-12.3 XOS, ___ Rancid-discuss mailing list Rancid-discuss@shrubbery.net http://www.shrubbery.net/mailman/listinfo/rancid-discuss