(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tid) op: Equal rhs: {(DQ ('protocol version mismatch'))} spids: [7] ) ] spids: [7] ) (FuncDef name: mismatch body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:server) op: Equal rhs: {($ VSub_Number '$1')} spids: [21] ) ] spids: [21] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:client) op: Equal rhs: {($ VSub_Number '$2')} spids: [25] ) ] spids: [25] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:banner) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(${ VSub_Name client)}) (C {(${ VSub_Name SSHD)} {(-o)} {(DQ ('Protocol=') (${ VSub_Name server))} {(-i)} {(-f)} {(${ VSub_Name OBJ) (/sshd_proxy)} ) ] negated: False ) ] ) left_token: <Left_Backtick '`'> spids: [30 60] ) } spids: [29] ) ] spids: [29] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:r) op: Equal rhs: {($ VSub_QMark '$?')} spids: [63] ) ] spids: [63] ) (C {(trace)} {(DQ ('sshd prints ') (${ VSub_Name banner))}) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Name '$r')} {(-ne)} {(255)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (C {(fail)} { (DQ ('sshd prints ') (${ VSub_Name banner) (' and accepts connect with version ') (${ VSub_Name client) ) } ) ] spids: [-1 90] ) ] spids: [-1 107] ) ] spids: [18] ) spids: [13 17] ) (C {(mismatch)} {(2)} {(SSH-1.5-HALLO)}) (If arms: [ (if_arm cond: [(Sentence child:(C {(ssh_version)} {(1)}) terminator:<Op_Semi ';'>)] action: [(C {(mismatch)} {(1)} {(SSH-2.0-HALLO)})] spids: [-1 125] ) ] spids: [-1 134] ) ] )