(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tid) op: assign_op.Equal rhs: {(DQ <'remote exit status'>)} spids: [7] ) ] ) (command.ForEach iter_name: p iter_words: [{(${ Id.VSub_Name SSH_PROTOCOLS)}] do_arg_iter: F body: (command.DoGroup children: [ (command.ForEach iter_name: s iter_words: [{<0>} {<1>} {<4>} {<5>} {<44>}] do_arg_iter: F body: (command.DoGroup children: [ (C {<trace>} { (DQ <'proto '> ($ Id.VSub_DollarName '$p') <' status '> ($ Id.VSub_DollarName '$s') ) } ) (C {<verbose>} { (DQ <'test '> ($ Id.VSub_DollarName '$tid') <': proto '> ($ Id.VSub_DollarName '$p') <' status '> ($ Id.VSub_DollarName '$s') ) } ) (C {(${ Id.VSub_Name SSH)} {<-> ($ Id.VSub_DollarName '$p')} {<-F>} {($ Id.VSub_DollarName '$OBJ') <'/ssh_proxy'>} {<otherhost>} {<Id.ControlFlow_Exit exit>} {($ Id.VSub_DollarName '$s')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [88] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$r')} {<-ne>} {($ Id.VSub_DollarName '$s')} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<fail>} { (DQ <'exit code mismatch for protocol '> ($ Id.VSub_DollarName '$p') <': '> ($ Id.VSub_DollarName '$r') <' != '> ($ Id.VSub_DollarName '$s') ) } ) ] spids: [92 105] ) ] ) (C {(${ Id.VSub_Name SSH)} {<-> ($ Id.VSub_DollarName '$p')} {<-F>} {($ Id.VSub_DollarName '$OBJ') <'/ssh_proxy'>} {<-n>} {<otherhost>} {<exec>} {<sh>} {<-c>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''>) (DQ <'sleep 2; exec > /dev/null 2>&1; sleep 3; exit '> ($ Id.VSub_DollarName '$s') ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''>) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [160] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$r')} {<-ne>} {($ Id.VSub_DollarName '$s')} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<fail>} { (DQ <'exit code (with sleep) mismatch for protocol '> ($ Id.VSub_DollarName '$p') <': '> ($ Id.VSub_DollarName '$r') <' != '> ($ Id.VSub_DollarName '$s') ) } ) ] spids: [164 177] ) ] ) ] ) ) ] ) ) ] )