[rancid] run_commands not liking eof/end of session

Josh Rogers 2010 at tybox.net
Wed Mar 30 04:21:22 UTC 2011


Once again, with the -c switch (nevermind the comment about spawning ssh twice)


$ jlogin -c "show system users" rtr1
rtr1
spawn ssh -c 3des -x -l robot rtr1

robot at rtr1's password:
--- JUNOS 9.2R3.5 built 2009-01-15 04:36:25 UTC
{master}
robot at rtr1>

{master}
robot at rtr1> set cli complete-on-space off
Disabling complete-on-space

{master}
robot at rtr1> set cli screen-length 0
Screen length set to 0

{master}
robot at rtr1> show system users
11:18PM  up 750 days,  7:02, 2 users, load averages: 0.72, 0.68, 0.68
USER     TTY      FROM                              LOGIN@  IDLE WHAT
robot p1      web01     11:18PM     - -cli (cli)

{master}
robot at rtr1> bad spawn_id (process died earlier?)
    while executing
"expect -nobrace {
} { exp_continue } timeout { catch {close}; catch {wait};
						  return 0
						} eof { return 0 }"
    invoked from within
"expect {
	"\n"					{ exp_continue }
	timeout					{ catch {close}; catch {wait};
						  return 0
						}
	eof					{ return 0 }
    }"
    (procedure "run_commands" line 21)
    invoked from within
"run_commands $prompt $command"
    ("foreach" body line 68)
    invoked from within
"foreach router [lrange $argv $i end] {
    set router [string tolower $router]
    send_user "$router\n"

    set prompt ">"

    # Figure out usernam..."
    (file "/usr/local/bin/jlogin" line 461)




On Tue, Mar 29, 2011 at 10:04 PM, Josh Rogers <2010 at tybox.net> wrote:
>>> > $ expect -v
>>> > expect version 5.43.0
>
> Ubuntu 10.04.  Originally I had the ubuntu maintainers version of
> expect/tcl installed, but the above was downloaded and compiled from
> shrubbery.net.  When looking closer, it appears that ssh is being
> spawned twice?
>
>
>
> $ jlogin rtr1 "show system users"
> rtr1
> spawn ssh -c 3des -x -l robot rtr1
> The authenticity of host 'rtr1 (192.168.240.1)' can't be established.
> RSA key fingerprint is <>.
> Are you sure you want to continue connecting (yes/no)?
> Host rtr1 added to the list of known hosts.
> yes
> Warning: Permanently added 'rtr1,192.168.240.1' (RSA) to the list of
> known hosts.
>
> robot at rtr1's password:
> --- JUNOS 9.2R3.5 built 2009-01-15 04:36:25 UTC
> {master}
> robot at rtr1> #Interacting?
>
> {master}
> robot at rtr1> q
> show system users
> spawn ssh -c 3des -x -l robot show system users
> bad spawn_id (process died earlier?)
>    while executing
> "expect -nobrace -re {(Connection refused|Secure connection [^
> ]+ refused|Connection closed by)} {
>                catch {close}; catch {wait};
>                if !$progs {
>                   ..."
>    invoked from within
> "expect {
>            -re "(Connection refused|Secure connection \[^\n\r]+
> refused|Connection closed by)" {
>                catch {close}; catch {wait};
>                if !$progs {
>                  ..."
>    (procedure "login" line 75)
>    invoked from within
> "login $router $loginname $passwd $cmethod $cyphertype $identfile"
>    ("foreach" body line 62)
>    invoked from within
> "foreach router [lrange $argv $i end] {
>    set router [string tolower $router]
>    send_user "$router\n"
>
>    set prompt ">"
>
>    # Figure out usernam..."
>    (file "/usr/local/bin/jlogin" line 461)
>
> I do not believe jlogin is modified, however I have modified jrancid
> (which isn't even called above), and I didn't have this issue on the
> previous version of expect (5.44.1.14) and tcl (8.5.8-2)
>
> Here is my jlogin for reference: http://pastebin.com/FeqYqYPq
>
> Thanks again for helping with this before I have to rollback expect and tcl.
>
> -Josh
>
>
> On Tue, Mar 29, 2011 at 5:59 PM, john heasley <heas at shrubbery.net> wrote:
>> Tue, Mar 29, 2011 at 02:28:14PM -0500, Josh Rogers:
>>> Forgot to mention jrancid version:
>>>
>>> ## $Id: jlogin.in,v 1.69 2009/04/16 21:22:57 heas Exp $
>>
>> i dont see anything the commit history that should have affected this.
>> unless you've modified it in some manner...
>>
>>> Appreciate the help/direction,
>>> Josh
>>>
>>> On Tue, Mar 29, 2011 at 11:36 AM, Josh Rogers <2010 at tybox.net> wrote:
>>> > I was having trouble with rancid reporting 'hung' and lockfiles
>>> > remaining, so I installed the patched/hack expect/tcl in hopes of
>>> > resolving it.
>>
>> good.
>>
>>> > Ever since, I'm seeing the following error below.
>>> >
>>> > Seems like eof isn't being handled properly when disconnecting, and it
>>> > errors out?? Any ideas what is leading to this?
>>
>> what version of expect?  on what O/S?  the expect_after or the expect after
>> the quite should deal with the process exiting; it should receive EOF.  i'd
>> suspect a change in expect, perhaps.
>>
>>> >
>>> > $ jlogin -t 120 -c"show chassis clocks;show chassis environment;show
>>> > chassis firmware;show chassis fpc detail;show chassis hardware
>>> > detail;show chassis routing-engine;show chassis scb;show chassis sfm
>>> > detail;show chassis ssb;show chassis feb detail;show chassis feb;show
>>> > chassis cfeb;show chassis alarms;show system license;show system
>>> > boot-messages;show system core-dumps;show version detail;show
>>> > interfaces description;show configuration;show configuration | display
>>> > set" rtr2
>>> > spawn ssh -c 3des -x -l robot rtr2
>>> > <output of show commands>
>>> >
>>> > {master}
>>> > robot at re0.rtr2> quit
>>> >
>>> > Connection to rtr2 closed.
>>> > bad spawn_id (process died earlier?)
>>> > ??? while executing
>>> > "expect -nobrace {
>>> > } { exp_continue } timeout { catch {close}; catch {wait};
>>> > ??? ??? ??? ??? ??? ??? ? return 0
>>> > ??? ??? ??? ??? ??? ??? } eof { return 0 }"
>>> > ??? invoked from within
>>> > "expect {
>>> > ??? "\n"??? ??? ??? ??? ??? { exp_continue }
>>> > ??? timeout??? ??? ??? ??? ??? { catch {close}; catch {wait};
>>> > ??? ??? ??? ??? ??? ??? ? return 0
>>> > ??? ??? ??? ??? ??? ??? }
>>> > ??? eof??? ??? ??? ??? ??? { return 0 }
>>> > ??? }"
>>> > ??? (procedure "run_commands" line 21)
>>> > ??? invoked from within
>>> > "run_commands $prompt $command"
>>> > ??? ("foreach" body line 68)
>>> > ??? invoked from within
>>> > "foreach router [lrange $argv $i end] {
>>> > ??? set router [string tolower $router]
>>> > ??? send_user "$router\n"
>>> >
>>> > ??? set prompt ">"
>>> >
>>> > ??? # Figure out usernam..."
>>> > ??? (file "/usr/local/bin/jlogin" line 461)
>>> >
>>> >
>>> >
>>> > $ expect -v
>>> > expect version 5.43.0
>>> > $ which tclsh
>>> > $ ls -l /usr/bin/tclsh
>>> > lrwxrwxrwx 1 root root 23 Nov 29 16:04 /usr/bin/tclsh -> /etc/alternatives/tclsh
>>> > $ ls -l /etc/alternatives/tclsh
>>> > lrwxrwxrwx 1 root root 23 Mar 29 11:05 /etc/alternatives/tclsh ->
>>> > /usr/local/bin/tclsh8.4
>>> >
>>> >
>>> > Section of jlogin that is failing:
>>> >
>>> > # Run commands given on the command line.
>>> > proc run_commands { prompt command } {
>>> > ??? global in_proc
>>> > ??? set in_proc 1
>>> >
>>> > ??? send "set cli complete-on-space off\r"
>>> > ??? expect -re $prompt? {}
>>> > ??? send "set cli screen-length 0\r"
>>> > ??? expect -re $prompt? {}
>>> >
>>> > ??? set commands [split $command \;]
>>> > ??? set num_commands [llength $commands]
>>> > ??? for {set i 0} {$i < $num_commands} { incr i} {
>>> > ??????? send "[lindex $commands $i]\r"
>>> > ??????? expect {
>>> > ??????????? -re "^\[^\n\r *]*$prompt $" {}
>>> > ??????????? -re "^\[^\n\r]*$prompt."??? { exp_continue }
>>> > ??????????? -re "(\r\n|\n)"???????????????????? { exp_continue }
>>> > ??????? }
>>> > ??? }
>>> > ??? send "quit\r"
>>> > ??? expect {
>>> > ??????? "\n"??????????????????????????????????? { exp_continue }
>>> > ??????? timeout???????????????????????????????? { catch {close}; catch {wait};
>>> > ????????????????????????????????????????????????? return 0
>>> > ??????????????????????????????????????????????? }
>>> > ??????? eof???????????????????????????????????? { return 0 }
>>> > ??? }
>>> > ??? set in_proc 0
>>> > }
>>> >
>>> >
>>> > Thanks much,
>>> > Josh
>>> >
>>> _______________________________________________
>>> 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