(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tid) op: assign_op.Equal rhs: {(DQ <'connect to ssh.com server'>)} 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.0.12\n'> <'\t2.0.13\n'> <'\t2.1.0\n'> <'\t2.2.0\n'> <'\t2.3.0\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] ) ] ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 136 stdin_parts: [ <'#*:\n'> <'\t# Port and ListenAddress are not used.\n'> <'\tQuietMode\t\t\tyes\n'> <'\tPort\t\t\t\t4343\n'> <'\tListenAddress\t\t\t127.0.0.1\n'> <'\tUserConfigDirectory\t\t'> (${ Id.VSub_Name OBJ) <'/%U\n'> <'\tCiphers\t\t\t\tAnyCipher\n'> <'\tPubKeyAuthentication\t\tyes\n'> <'\t#AllowedAuthentications\t\tpublickey\n'> <'\tAuthorizationFile\t\tauthorization\n'> <'\tHostKeyFile\t\t\t'> (${ Id.VSub_Name SRC) <'/dsa_ssh2.prv\n'> <'\tPublicHostKeyFile\t\t'> (${ Id.VSub_Name SRC) <'/dsa_ssh2.pub\n'> <'\tRandomSeedFile\t\t\t'> (${ Id.VSub_Name OBJ) <'/random_seed\n'> <'\tMaxConnections\t\t\t0\n'> <'\tPermitRootLogin\t\t\tyes\n'> <'\tVerboseMode\t\t\tno\n'> <'\tCheckMail\t\t\tno\n'> <'\tSsh1Compatibility\t\tno\n'> ] ) ) (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$OBJ') <'/sshd2_config'>} ) ] do_fork: T ) (command.Simple words: [{<sed>} {(DQ <'s/HostKeyAlias.*/HostKeyAlias ssh2-localhost-with-alias/'>)}] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName '$OBJ') <'/ssh_config'>} ) (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$OBJ') <'/ssh_config_com'>} ) ] do_fork: T ) (C {<rm>} {<-f>} {(${ Id.VSub_Name OBJ) <'/dsa'>} {(${ Id.VSub_Name OBJ) <'/dsa.pub'>}) (C {(${ Id.VSub_Name SSHKEYGEN)} {<-q>} {<-N>} {(SQ )} {<-t>} {<dsa>} {<-f>} {(${ Id.VSub_Name OBJ) <'/dsa'>} ) (C {<mkdir>} {<-p>} {(${ Id.VSub_Name OBJ) <'/'> (${ Id.VSub_Name USER)}) (C {<cp>} {<'/dev/null'>} {(${ Id.VSub_Name OBJ) <'/'> (${ Id.VSub_Name USER) <'/authorization'>}) (command.ForEach iter_name: t iter_words: [{<rsa>} {<dsa>}] do_arg_iter: F body: (command.DoGroup children: [ (command.Simple words: [ {(${ Id.VSub_Name SSHKEYGEN)} {<-e>} {<-f>} {(${ Id.VSub_Name OBJ) <'/'> ($ Id.VSub_DollarName '$t') <.pub>} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name OBJ) <'/'> (${ Id.VSub_Name USER) <'/'> ($ Id.VSub_DollarName '$t') <.com> } ) ] do_fork: T ) (command.Simple words: [{<echo>} {<Key>} {($ Id.VSub_DollarName '$t') <.com>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name OBJ) <'/'> (${ Id.VSub_Name USER) <'/authorization'>} ) ] do_fork: T ) (command.Simple words: [ {<echo>} {<IdentityFile>} {(${ Id.VSub_Name OBJ) <'/'> ($ Id.VSub_DollarName '$t')} ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name OBJ) <'/ssh_config_com'>} ) ] do_fork: T ) ] ) ) (command.Subshell child: (command.CommandList children: [ (C {<printf>} {(SQ <'ssh2-localhost-with-alias,127.0.0.1,::1 '>)}) (C {(${ Id.VSub_Name SSHKEYGEN)} {<-if>} {(${ Id.VSub_Name SRC) <'/dsa_ssh2.pub'>}) ] ) redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$OBJ') <'/known_hosts'>} ) ] ) (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:sshd2) op: assign_op.Equal rhs: {(${ Id.VSub_Name TEST_COMBASE) <'/'> (${ Id.VSub_Name v) <'/sshd2'>} spids: [359] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-x>} {(${ Id.VSub_Name sshd2)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)] spids: [370 385] ) ] ) (C {<trace>} {(DQ <'sshd2 '> (${ Id.VSub_Name v))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PROXY) op: assign_op.Equal rhs: { (DQ <'proxycommand '> (${ Id.VSub_Name sshd2) <' -qif '> (${ Id.VSub_Name OBJ) <'/sshd2_config 2> /dev/null'> ) } spids: [404] ) ] ) (C {(${ Id.VSub_Name SSH)} {<-qF>} {(${ Id.VSub_Name OBJ) <'/ssh_config_com'>} {<-o>} {(DQ (${ Id.VSub_Name PROXY))} {<dummy>} {<Id.ControlFlow_Exit exit>} {<0>} ) (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 <'ssh connect to sshd2 '> (${ Id.VSub_Name v) <' failed'>)})] spids: [444 457] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ciphers) op: assign_op.Equal rhs: {(DQ <'3des-cbc blowfish-cbc arcfour'>)} spids: [475] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:macs) op: assign_op.Equal rhs: {(DQ <hmac-md5>)} spids: [481] ) ] ) (command.Case to_match: {($ Id.VSub_DollarName '$v')} arms: [ (case_arm pat_list: [{<2.4.> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ciphers) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$ciphers') <' cast128-cbc'>)} spids: [499] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:macs) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$macs') <' hmac-sha1 hmac-sha1-96 hmac-md5-96'> ) } spids: [506] ) ] ) ] spids: [494 496 513 -1] ) (case_arm pat_list: [{<3.> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ciphers) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$ciphers') <' aes128-cbc cast128-cbc'>)} spids: [521] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:macs) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$macs') <' hmac-sha1 hmac-sha1-96 hmac-md5-96'> ) } spids: [528] ) ] ) ] spids: [516 518 535 -1] ) ] ) (command.ForEach iter_name: m iter_words: [{($ Id.VSub_DollarName '$macs')}] do_arg_iter: F body: (command.DoGroup children: [ (command.ForEach iter_name: c iter_words: [{($ Id.VSub_DollarName '$ciphers')}] do_arg_iter: F body: (command.DoGroup children: [ (C {<trace>} { (DQ <'sshd2 '> (${ Id.VSub_Name v) <' cipher '> ($ Id.VSub_DollarName '$c') <' mac '> ($ Id.VSub_DollarName '$m') ) } ) (C {<verbose>} { (DQ <'test '> (${ Id.VSub_Name tid) <': sshd2 '> (${ Id.VSub_Name v) <' cipher '> ($ Id.VSub_DollarName '$c') <' mac '> ($ Id.VSub_DollarName '$m') ) } ) (C {(${ Id.VSub_Name SSH)} {<-c>} {($ Id.VSub_DollarName '$c')} {<-m>} {($ Id.VSub_DollarName '$m')} {<-qF>} {(${ Id.VSub_Name OBJ) <'/ssh_config_com'>} {<-o>} {(DQ (${ Id.VSub_Name PROXY))} {<dummy>} {<Id.ControlFlow_Exit exit>} {<0>} ) (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 <'ssh connect to sshd2 '> (${ Id.VSub_Name v) <' with '> ($ Id.VSub_DollarName '$c') <'/'> ($ Id.VSub_DollarName '$m') <' failed'> ) } ) ] spids: [635 648] ) ] ) ] ) ) ] ) ) ] ) ) (C {<rm>} {<-rf>} {(${ Id.VSub_Name OBJ) <'/'> (${ Id.VSub_Name USER)}) (command.ForEach iter_name: i iter_words: [ {<sshd_config_proxy>} {<ssh_config_proxy>} {<random_seed>} {<sshd2_config>} {<dsa.pub>} {<dsa>} {<ssh_config_com>} ] do_arg_iter: F body: (command.DoGroup children: [(C {<rm>} {<-f>} {(${ Id.VSub_Name OBJ) <'/'> ($ Id.VSub_DollarName '$i')})] ) ) ] )