Re: [rancid] clogin commenting script commands following multiple blanks lines

2018-10-24 Thread heasley
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

2018-10-24 Thread heasley
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

2018-10-24 Thread 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.



___
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

2018-10-24 Thread heasley
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