(CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:tid) op:Equal rhs:{(DQ ('sftp in chroot'))} spids:[7])] spids: [7] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:CHROOT) op:Equal rhs:{(/var/run)} spids:[13])] spids: [13] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILENAME) op: Equal rhs: {(testdata_) (${ VSub_Name USER)} spids: [16] ) ] spids: [16] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PRIVDATA) op: Equal rhs: {(${ VSub_Name CHROOT) (/) (${ VSub_Name FILENAME)} spids: [22] ) ] spids: [22] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$SUDO'))} {(-a)} {(KW_Bang '!')} {(-w)} {(/var/run)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ("skipped: need SUDO to create file in /var/run, test won't work without"))} ) (C {(exit)} {(0)}) ] spids: [-1 53] ) ] spids: [-1 67] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {($ VSub_Name '$OBJ') (/check-perm)} {(-m)} {(chroot)} {(DQ ($ VSub_Name '$CHROOT'))} ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('skipped: ') ($ VSub_Name '$CHROOT') (' is unsuitable as ChrootDirectory'))} ) (C {(exit)} {(0)}) ] spids: [-1 87] ) ] spids: [-1 103] ) (AndOr children: [ (C {($ VSub_Name '$SUDO')} {(sh)} {(-c)} {(DQ ('echo mekmitastdigoat > ') ($ VSub_Name '$PRIVDATA'))} ) (C {(fatal)} {(DQ ('create ') ($ VSub_Name '$PRIVDATA') (' failed'))}) ] op_id: Op_DPipe ) (C {(start_sshd)} {(-oChrootDirectory) (Lit_Other '=') ($ VSub_Name '$CHROOT')} {(-oForceCommand) (Lit_Other '=') (DQ ('internal-sftp -d /'))} ) (C {(verbose)} {(DQ ('test ') ($ VSub_Name '$tid') (': get'))}) (AndOr children: [ (SimpleCommand words: [ {(${ VSub_Name SFTP)} {(-S)} {(DQ ($ VSub_Name '$SSH'))} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(host) (Lit_Other ':') (/) (${ VSub_Name FILENAME)} {($ VSub_Name '$COPY')} ] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {($ VSub_Name '$TEST_REGRESS_LOGFILE')} spids: [177] ) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[180]) ] ) (C {(fatal)} {(DQ ('Fetch ') (${ VSub_Name FILENAME) (' failed'))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(cmp)} {($ VSub_Name '$PRIVDATA')} {($ VSub_Name '$COPY')}) (C {(fail)} {(DQ ($ VSub_Name '$PRIVDATA') (' ') ($ VSub_Name '$COPY') (' differ'))}) ] op_id: Op_DPipe ) (C {($ VSub_Name '$SUDO')} {(rm)} {($ VSub_Name '$PRIVDATA')}) ] )