(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tid) op: assign_op.Equal rhs: {(DQ <'connect with ssh.com client'>)} spids: [7] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ <X> (${ Id.VSub_Name TEST_COMBASE))} {<Id.Lit_Equals '='>} {(DQ <X>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<fatal>} {(SQ <'$TEST_COMBASE is not set'>)})] spids: [16 36] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VERSIONS) op: assign_op.Equal rhs: { (DQ <'\n'> <'\t2.1.0\n'> <'\t2.2.0\n'> <'\t2.3.0\n'> <'\t2.3.1\n'> <'\t2.4.0\n'> <'\t3.0.0\n'> <'\t3.1.0\n'> <'\t3.2.0\n'> <'\t3.2.2\n'> <'\t3.2.3\n'> <'\t3.2.5\n'> <'\t3.2.9\n'> <'\t3.2.9.1\n'> <'\t3.3.0'> ) } spids: [48] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SRC) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<dirname>} {(${ Id.VSub_Name SCRIPT)}) ) } spids: [75] ) ] ) (C {<cp>} {(${ Id.VSub_Name SRC) <'/dsa_ssh2.prv'>} {(${ Id.VSub_Name OBJ) <'/id.com'>}) (C {<chmod>} {<600>} {(${ Id.VSub_Name OBJ) <'/id.com'>}) (command.Simple words: [{(${ Id.VSub_Name SSHKEYGEN)} {<-i>} {<-f>} {(${ Id.VSub_Name OBJ) <'/id.com'>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$OBJ') <'/id.openssh'>} ) ] do_fork: T ) (C {<chmod>} {<600>} {(${ Id.VSub_Name OBJ) <'/id.openssh'>}) (command.Simple words: [{(${ Id.VSub_Name SSHKEYGEN)} {<-y>} {<-f>} {(${ Id.VSub_Name OBJ) <'/id.openssh'>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$OBJ') <'/authorized_keys_'> ($ Id.VSub_DollarName '$USER')} ) ] do_fork: T ) (command.Simple words: [{(${ Id.VSub_Name SSHKEYGEN)} {<-e>} {<-f>} {(${ Id.VSub_Name OBJ) <'/id.openssh'>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$OBJ') <'/id.com.pub'>} ) ] do_fork: T ) (command.Simple words: [{<echo>} {<IdKey>} {(${ Id.VSub_Name OBJ) <'/id.com'>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name OBJ) <'/id.list'>} ) ] do_fork: T ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:t) op:assign_op.Equal rhs:{<dsa>} spids:[191])] ) (C {<rm>} {<-f>} {(${ Id.VSub_Name OBJ) <'/'> ($ Id.VSub_DollarName '$t')} {(${ Id.VSub_Name OBJ) <'/'> ($ Id.VSub_DollarName '$t') <.pub>} ) (C {(${ Id.VSub_Name SSHKEYGEN)} {<-q>} {<-N>} {(SQ )} {<-t>} {($ Id.VSub_DollarName '$t')} {<-f>} {(${ Id.VSub_Name OBJ) <'/'> ($ Id.VSub_DollarName '$t')} ) (C {($ Id.VSub_DollarName '$SUDO')} {<cp>} {($ Id.VSub_DollarName '$OBJ') <'/'> ($ Id.VSub_DollarName '$t')} {($ Id.VSub_DollarName '$OBJ') <'/host.'> ($ Id.VSub_DollarName '$t')} ) (command.Simple words: [ {<echo>} {<HostKey>} {($ Id.VSub_DollarName '$OBJ') <'/host.'> ($ Id.VSub_DollarName '$t')} ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$OBJ') <'/sshd_config'>} ) ] do_fork: T ) (C {<mkdir>} {<-p>} {(${ Id.VSub_Name OBJ) <'/'> (${ Id.VSub_Name USER) <'/hostkeys'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HK) op: assign_op.Equal rhs: {(${ Id.VSub_Name OBJ) <'/'> (${ Id.VSub_Name USER) <'/hostkeys/key_'> (${ Id.VSub_Name PORT) <_127.0.0.1> } spids: [276] ) ] ) (command.Simple words: [{(${ Id.VSub_Name SSHKEYGEN)} {<-e>} {<-f>} {(${ Id.VSub_Name OBJ) <'/rsa.pub'>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name HK) <.ssh-rsa.pub>} ) ] do_fork: T ) (command.Simple words: [{(${ Id.VSub_Name SSHKEYGEN)} {<-e>} {<-f>} {(${ Id.VSub_Name OBJ) <'/dsa.pub'>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name HK) <.ssh-dss.pub>} ) ] do_fork: T ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name OBJ) <'/ssh2_config'>} ) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 377 stdin_parts: [ <'*:\n'> <'\tQuietMode\t\t\tyes\n'> <'\tStrictHostKeyChecking\t\tyes\n'> <'\tPort\t\t\t\t'> (${ Id.VSub_Name PORT) <'\n'> <'\tUser\t\t\t\t'> (${ Id.VSub_Name USER) <'\n'> <'\tHost\t\t\t\t127.0.0.1\n'> <'\tIdentityFile\t\t\t'> (${ Id.VSub_Name OBJ) <'/id.list\n'> <'\tRandomSeedFile\t\t\t'> (${ Id.VSub_Name OBJ) <'/random_seed\n'> <' UserConfigDirectory '> (${ Id.VSub_Name OBJ) <'/%U\n'> <'\tAuthenticationSuccessMsg\tno\n'> <'\tBatchMode\t\t\tyes\n'> <'\tForwardX11\t\t\tno\n'> ] ) ) ] do_fork: T ) (C {<start_sshd>}) (command.ForEach iter_name: v iter_words: [{(${ Id.VSub_Name VERSIONS)}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ssh2) op: assign_op.Equal rhs: {(${ Id.VSub_Name TEST_COMBASE) <'/'> (${ Id.VSub_Name v) <'/ssh2'>} spids: [402] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-x>} {(${ Id.VSub_Name ssh2)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)] spids: [413 428] ) ] ) (C {<verbose>} {(DQ <'ssh2 '> (${ Id.VSub_Name v))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:key) op: assign_op.Equal rhs: {<ssh-dss>} spids: [447] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:skipcat) op: assign_op.Equal rhs: {<0>} spids: [451] ) ] ) (command.Case to_match: {($ Id.VSub_DollarName '$v')} arms: [ (case_arm pat_list: [{<2.1.> <Id.Lit_Star '*'>} {<2.3.0>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:skipcat) op: assign_op.Equal rhs: {<1>} spids: [469] ) ] ) ] spids: [462 466 473 -1] ) (case_arm pat_list: [{<3.0.> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:key) op: assign_op.Equal rhs: {<ssh-rsa>} spids: [481] ) ] ) ] spids: [476 478 485 -1] ) ] ) (C {<cp>} {(${ Id.VSub_Name HK) <.> ($ Id.VSub_DollarName '$key') <.pub>} {(${ Id.VSub_Name HK) <.pub>} ) (C {(${ Id.VSub_Name ssh2)} {<-q>} {<-F>} {(${ Id.VSub_Name OBJ) <'/ssh2_config'>} {<somehost>} {<Id.ControlFlow_Exit exit>} {<42>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [531] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$r')} {<-ne>} {<42>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<fail>} { (DQ <'ssh2 '> (${ Id.VSub_Name v) <' exit code test failed (got '> ($ Id.VSub_DollarName '$r') <', expected 42)'> ) } ) ] spids: [535 548] ) ] ) (C {<rm>} {<-f>} {(${ Id.VSub_Name COPY)}) (command.Simple words: [ {(${ Id.VSub_Name ssh2)} {<-F>} {(${ Id.VSub_Name OBJ) <'/ssh2_config'>} {<somehost>} {<cat>} {(${ Id.VSub_Name DATA)} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name COPY)} ) ] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<fail>} {(DQ <'ssh2 '> (${ Id.VSub_Name v) <' cat test (receive) failed'>)}) ] spids: [607 620] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<cmp>} {(${ Id.VSub_Name DATA)} {(${ Id.VSub_Name COPY)}) (C {<fail>} {(DQ <'ssh2 '> (${ Id.VSub_Name v) <' cat test (receive) data mismatch'>)}) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$skipcat')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<rm>} {<-f>} {(${ Id.VSub_Name COPY)}) (command.Pipeline children: [ (C {<cat>} {(${ Id.VSub_Name DATA)}) (C {(${ Id.VSub_Name ssh2)} {<-F>} {(${ Id.VSub_Name OBJ) <'/ssh2_config'>} {<host>} {(DQ <'cat > '> (${ Id.VSub_Name COPY))} ) ] negated: F ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<fail>} {(DQ <'ssh2 '> (${ Id.VSub_Name v) <' cat test (send) failed'>)}) ] spids: [721 734] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<cmp>} {(${ Id.VSub_Name DATA)} {(${ Id.VSub_Name COPY)}) (C {<fail>} {(DQ <'ssh2 '> (${ Id.VSub_Name v) <' cat test (send) data mismatch'>)} ) ] ) ] spids: [665 678] ) ] ) (C {<rm>} {<-f>} {(${ Id.VSub_Name COPY)}) (command.Simple words: [ {(${ Id.VSub_Name ssh2)} {<-F>} {(${ Id.VSub_Name OBJ) <'/ssh2_config'>} {<somehost>} {<exec>} {<sh>} {<-c>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''>) (DQ <'exec > /dev/null; sleep 1; echo bla 1>&2; exit 0'>) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''>) } ] redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<fail>} {(DQ <'ssh2 '> (${ Id.VSub_Name v) <' stderr test failed'>)})] spids: [827 840] ) ] ) ] ) ) (C {<rm>} {<-rf>} {(${ Id.VSub_Name OBJ) <'/'> (${ Id.VSub_Name USER)}) (command.ForEach iter_name: i iter_words: [ {<ssh2_config>} {<random_seed>} {<dsa.pub>} {<dsa>} {<host.dsa>} {<id.list>} {<id.com>} {<id.com.pub>} {<id.openssh>} ] do_arg_iter: F body: (command.DoGroup children: [(C {<rm>} {<-f>} {(${ Id.VSub_Name OBJ) <'/'> ($ Id.VSub_DollarName '$i')})] ) ) ] )