a i,@s^ddlZddlZddlZddlmZmZej dddZ ddd Z d d Z d d ZddZdS)N) log_utilsutilsTcCsR|pd}|D]&}tj||}tj|r |Sq |rJtd||ndSdS)N)z /usr/sbinz/sbinz/usr/binz/binz{0} could not be found at {1})ospathjoinisfile Exceptionformat)namepathsZ raise_excitfnamer3/usr/libexec/kcare/python/kcarectl/process_utils.pyfind_cmds  rFc Cs|r tjnd}|rtjnd}tj||||d}|\}}|j} |durRt|}|durdt|}tt dj |j||d |d| ||fS)N)stdoutstderrshellz Call result for `{cmd}`: exit code {exit_code} === STDOUT === {stdout} === STDERR === {stderr} === END ===  )Z exit_coderrcmd) subprocessPIPEPopen communicate returncodernstrrlogdebugtextwrapdedentr r) command catch_stdout catch_stderrrrrpZstdout_capturedZstderr_capturedcoderrr run_commands"     r%cCst|dd\}}}|S)NTr!)r%)args_rrrr check_output<sr)c Cszdddddt|g}t|dd\}}}|rHtjdj|d d d Wd S|}dddd dt|g}t|dd\}}}|rtjdj|d d d Wd S|}t||fWSty}z&tjdj||dd d WYd}~d Sd}~00dS)Npsz --no-headersz-oppidz-pTr&z3Could not retrieve process parent PID for PID {pid})pidF print_msg)NNZcommz-Could not retrieve process name for PID {pid}zJCould not retrieve process name and parent PID for PID {pid}, error: {err})r,err)strr%rloginfor stripintr ) r,Zcmd_ppidr$rr(r+Zcmd_commr errr _get_parent_pid_and_process_nameAs&r5cCsg}t}|dkrF|dkrFt|\}}|||f|dur@qF|}q tjdddtt|D]:\}\}}d|d}tjdj||pd |pd d ddq`dS) NrrzAgent parent processes chain:Fr--z->z{prefix} "{name}" (pid: {pid})unknown)prefixr r,) rgetpidr5appendrr1 enumeratereversedr )Z process_chainZ current_pidr+Z process_namelevelr,r r8rrrlog_all_parent_processes[s  r>)NT)FFF)rrrrrListOptionalTupleUnioncachedrr%r)r5r>rrrrs