(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tid) op: assign_op.Equal rhs: {(DQ <'login with different key exchange algorithms'>)} spids: [7] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TIME) op: assign_op.Equal rhs: {<'/usr/bin/time'>} spids: [13] ) ] ) (C {<cp>} {($ Id.VSub_DollarName '$OBJ') <'/sshd_proxy'>} {($ Id.VSub_DollarName '$OBJ') <'/sshd_proxy_bak'>} ) (C {<cp>} {($ Id.VSub_DollarName '$OBJ') <'/ssh_proxy'>} {($ Id.VSub_DollarName '$OBJ') <'/ssh_proxy_bak'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ALLKEX) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {(${ Id.VSub_Name SSH)} {<-Q>} {<kex>}) ) } spids: [36] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:KEXOPT) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName '$ALLKEX')}) (C {<tr>} {(SQ <' '>)} {<Id.Lit_Comma ','>}) ] negated: F ) ) } spids: [49] ) ] ) (command.Simple words: [{<echo>} {(DQ <'KexAlgorithms='> ($ Id.VSub_DollarName '$KEXOPT'))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$OBJ') <'/sshd_proxy'>} ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tries) op: assign_op.Equal rhs: {(DQ <'1 2 3 4'>)} spids: [81] ) ] ) (command.ForEach iter_name: k iter_words: [ { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {(${ Id.VSub_Name SSH)} {<-Q>} {<kex>}) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (C {<verbose>} {(DQ <'kex '> ($ Id.VSub_DollarName '$k'))}) (command.ForEach iter_name: i iter_words: [{($ Id.VSub_DollarName '$tries')}] do_arg_iter: F body: (command.DoGroup children: [ (C {(${ Id.VSub_Name SSH)} {<-F>} {($ Id.VSub_DollarName '$OBJ') <'/ssh_proxy'>} {<-o>} {<Id.Lit_VarLike 'KexAlgorithms='> ($ Id.VSub_DollarName '$k')} {<x>} {<true>} ) (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 kex '> ($ Id.VSub_DollarName '$k'))})] spids: [147 160] ) ] ) ] ) ) ] ) ) ] )