(CommandList children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(DQ (x) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (x))} {(-o)} {(DQ (x) ($ VSub_Number '$2'))} {(Lit_Other '=')} {(DQ (x))} {(-o)} {(DQ (x) ($ VSub_Number '$3'))} {(Lit_Other '=')} {(DQ (x))} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('Usage: ssh2putty hostname port ssh-private-key'))}) (C {(exit)} {(1)}) ] spids: [-1 50] ) ] spids: [-1 64] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:HOST) op:Equal rhs:{($ VSub_Number '$1')} spids:[67])] spids: [67] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:PORT) op:Equal rhs:{($ VSub_Number '$2')} spids:[70])] spids: [70] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:KEYFILE) op:Equal rhs:{($ VSub_Number '$3')} spids:[73])] spids: [73] ) (If arms: [ (if_arm cond: [ (Sentence child: (SimpleCommand words: [{(grep)} {(DQ ('BEGIN RSA PRIVATE KEY'))} {($ VSub_Name '$KEYFILE')}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(/dev/null)} spids: [90] ) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[93]) ] ) terminator: <Op_Semi ';'> ) ] action: [(C {(Lit_Other ':')})] spids: [-1 98] ) ] else_action: [(C {(echo)} {(DQ ('Unsupported private key format'))}) (C {(exit)} {(1)})] spids: [103 117] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:public_exponent) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(openssl)} {(rsa)} {(-noout)} {(-text)} {(-in)} {($ VSub_Name '$KEYFILE')}) (C {(grep)} {(Lit_Other '^') (publicExponent)}) (C {(sed)} {(SQ <'s/.*(//;s/).*//'>)}) ] negated: False ) ] ) left_token: <Left_Backtick '`'> spids: [121 152] ) } spids: [120] ) ] spids: [120] ) (AndOr children: [(C {(test)} {($ VSub_QMark '$?')} {(-ne)} {(0)}) (C {(exit)} {(1)})] op_id: Op_DAmp ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:modulus) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(openssl)} {(rsa)} {(-noout)} {(-modulus)} {(-in)} {($ VSub_Name '$KEYFILE')}) (C {(grep)} {(Lit_Other '^') (Lit_VarLike 'Modulus=')}) (C {(sed)} {(SQ <'s/^Modulus=/0x/'>)}) (C {(tr)} {(A-Z)} {(a-z)}) ] negated: False ) ] ) left_token: <Left_Backtick '`'> spids: [170 209] ) } spids: [169] ) ] spids: [169] ) (AndOr children: [(C {(test)} {($ VSub_QMark '$?')} {(-ne)} {(0)}) (C {(exit)} {(1)})] op_id: Op_DAmp ) (C {(echo)} { (DQ ('rsa2@') ($ VSub_Name '$PORT') (':') ($ VSub_Name '$HOST') (' ') ($ VSub_Name '$public_exponent') (',') ($ VSub_Name '$modulus') ) } ) ] )