(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tid) op: assign_op.Equal rhs: {(DQ <'broken keys'>)} spids: [7] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:KEYS) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$OBJ') <'/authorized_keys_'> (${ Id.VSub_Name USER))} spids: [13] ) ] ) (C {<start_sshd>}) (C {<mv>} {(${ Id.VSub_Name KEYS)} {(${ Id.VSub_Name KEYS) <.bak>}) (command.Simple words: [{<echo>} {(DQ <'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEABTM= bad key'>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$KEYS')} ) ] do_fork: T ) (command.Simple words: [{<cat>} {(${ Id.VSub_Name KEYS) <.bak>}] redirects: [ (redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{(${ Id.VSub_Name KEYS)}) ] do_fork: T ) (command.Simple words: [{<cat>} {($ Id.VSub_DollarName '$OBJ') <'/'> ($ Id.VSub_DollarName '$t') <.pub>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$OBJ') <'/authorized_keys_'> ($ Id.VSub_DollarName '$USER')} ) ] do_fork: T ) (C {(${ Id.VSub_Name SSH)} {<-2>} {<-F>} {($ Id.VSub_DollarName '$OBJ') <'/ssh_config'>} {<somehost>} {<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 connect with protocol '> ($ Id.VSub_DollarName '$p') <' failed'>)}) ] spids: [93 106] ) ] ) (C {<mv>} {(${ Id.VSub_Name KEYS) <.bak>} {(${ Id.VSub_Name KEYS)}) ] )