e j?e j@e jAe jBe jCe jDe jEe jFe jGe jHi ZIeJdddddddd !ZKed"d#d$gZLeLZMed%gd&ZNed'gd(ZOd)ZPd*ZQd+ZRd,ZSd-ZTd.ZUd/ZVe jWZWe jXZXdzAIX platform implementation.N) namedtuple)_common)_psposix) _psutil_aix) _psutil_posix) AccessDenied)conn_to_ntuple)get_procfs_path)memoize_when_activated)NIC_DUPLEX_FULL)NIC_DUPLEX_HALF)NIC_DUPLEX_UNKNOWN) NoSuchProcess) usage_percent) ZombieProcess)FileNotFoundError)PermissionError)ProcessLookupError)PY3 PROCFS_PATH proc_threadsnet_io_countersproc_io_counters)ppidrssvms create_timenice num_threadsstatusttynrpmemr"r# scputimes)usersystemidleiowaitsvmem)total availablepercentusedfreectj\}}}}}t||z |d}t|||||S)Nrround_)cext virtual_memrr/)r0availr4pinnedinuser2s o/builddir/build/BUILD/imunify360-venv-2.5.0/opt/imunify360/venv/lib64/python3.11/site-packages/psutil/_psaix.pyvirtual_memoryr>jsI(,(8(:(:%E5$UU]U1===G wt 4 44ctj\}}}}||z }t||d}tj||||||S)z=Swap system memory as a (total, used, free, sin, sout) tuple.rr6)r8swap_memrrsswap)r0r4sinsoutr3r2s r= swap_memoryrEpsM!]__E4d 4zcpu_times..s111!s1vv111r?)r8 per_cpu_timesr*ziprets r= cpu_timesrR}s.    C 11sCy111 22r?c@tj}d|DS)z5Return system per-CPU times as a list of named tuplesc g|] }t| SrH)r*rJs r=rMz!per_cpu_times..s ' ' 'aIqM ' ' 'r?)r8rNrPs r=rNrNs$    C ' '3 ' ' ''r?cN tjdS#t$rYdSwxYw)z0Return the number of logical CPUs in the system.SC_NPROCESSORS_ONLNN)ossysconf ValueErrorrHr?r=cpu_count_logicalrZs:z/000 tts  $$chd}tj|dtjtj}|\}}trd||fD\}}|jdkrt |d||}t|pdS)Nzlsdev -Cc processorT)shellstdoutstderrcVg|]&}|tjj'SrHdecodesysr]encodingrJs r=rMz&cpu_count_physical..s9555((3:#677555r?rz command error ) subprocessPopenPIPE communicater returncode RuntimeErrorstrip splitlineslen)cmdpr]r^ processorss r=cpu_count_physicalrps CD * 1 1 1A]]__NFF 555$*F#3555|qSSS&&ABBB**,,J z?? "d"r?c`tj\}}}}tj||||S)z*Return various CPU stats as a named tuple.)r8 cpu_statsr scpustats) ctx_switches interruptssoft_interruptssyscallss r=rrrrs6:>.:J:J7L*ox  j/8 = ==r?Fc g}tj}|D]Z}|\}}}}|dkrd}|st|js(dx}} t j|||||| } || [|S)zReturn system disk partitions.noneN)r8disk_partitions disk_usager0r sdiskpartappend) allretlist partitions partitiondevice mountpointfstypeoptsmaxfilemaxpathntuples r=r{r{sG%''J   +4( FD V  F j))/   '"6:vt#*G55v Nr?c tj}||vr2td|ddd|Dtj|\}}t j|}g}|D]O}|\}} } } } } }| |vr| |vrt || | | | | t|dkr|nd}||P|S)zReturn socket connections. If pid == -1 return system-wide connections (as opposed to connections opened by one process only). zinvalid z kind argument; choose between z, c,g|]}t|SrH)reprrJs r=rMz#net_connections..s,C,C,CT!WW,C,C,Cr?rNpid) r conn_tmaprYjoinr8net_connectionsr TCP_STATUSESr~)kind_pidcmapfamiliestypesrawlistrQitemfdfamtype_laddrraddrr'rnts r=rrs   D 4j DD$)),C,Cd,C,C,C"D"D"DFGG G'-OHe"4((G C481Cufc h        BUE5&(TRZZccTKKK 2 Jr?cttd}tdtD}i}|D] }t j|\}}d}d}t jdd|gt jt j}| \} } trd| | fD\} } |j dkrNtj d | } | 7t| d }| d }||t"}t%j||||||< |S) z)Get NIC stats (isup, duplex, speed, mtu).)FullHalfcg|] }|d S)rrHrJs r=rMz net_if_stats..s...!1...r?rzrz/usr/bin/entstatz-dr]r^cVg|]&}|tjj'SrHr`rJs r=rMz net_if_stats..9999"# hhsz':;;999r?z"Running: (\d+) Mbps.*?(\w+) DuplexNrr)r rset net_if_addrsr8 net_if_statsrdrerfrgrrhresearchintgroupgetrr snicstats) duplex_mapnamesrQnameisupmtuduplexspeedrnr]r^ re_results r=rrs_))++J ..|~~... / /E C@@%d++ c   0$=$.OJO M M M  999(.'7999NFF <1   5v??I$IOOA..//"++(:;;%dFE3??D Jr?c(tjS)z:The system boot time expressed in seconds since the epoch.)r8 boot_timerHr?r=rrs >  r?cg}tj}d}|D]A}|\}}}}}} |s||vrd}tj||||| } || B|S)z:Return currently connected users as a list of namedtuples.)z:0.0z:0 localhost)r8usersrsuserr~) rrrrr+ttyhostnametstamp user_processrrs r=rrsGjllGI  9=6c8V\3   y "H ]4h < <r Nr?cVdtjtDS)z7Returns a list of PIDs currently running on the system.cTg|]%}|t|&SrH)isdigitrrJs r=rMzpids..-s+ I I IqQYY[[ ICFF I I Ir?)rWlistdirr rHr?r=pidsr+s& I IBJ'8'899 I I IIr?ctjtjt t |dS)z&Check for the existence of a unix pid.psinfo)rWpathexistsrr strrs r= pid_existsr0s4 7>>"',,'8'8#c((HMM N NNr?cFtjfd}|S)zCall callable into a try/except clause and translate ENOENT, EACCES and EPERM in NoSuchProcess or AccessDenied exceptions. c* |g|Ri|S#ttf$rOt|jst |j|jt |j|j|jt$rt|j|jwxYwN) rrrrr_namer_ppidrr )selfargskwargsfuns r=wrapperz wrap_exceptions..wrapper9s 53t-d---f-- -!#56 F F Fdh'' F#DHdj999#DHdj$*EEE 5 5 5tx44 4 5s BB) functoolswraps)rrs` r=wrap_exceptionsr5s:_S 5 5 5 5 5 Nr?cveZdZdZgdZdZdZdZee dZ ee dZ edZ ed Z ed Zed Zed Zed Zer edZed!dZedZedZedZedZedZedZedZedZedZeZedZdZ edZ!edZ"ed"dZ#e$r ed Z%dSdS)#Processz1Wrapper class around underlying C implementation.)rrr _procfs_path_cachecV||_d|_d|_t|_dSr)rrrr r)rrs r=__init__zProcess.__init__Os+  +--r?cn|j||j|dSr)_proc_basic_infocache_activate _proc_credrs r= oneshot_enterzProcess.oneshot_enterUs5 ,,T222 &&t,,,,,r?cn|j||j|dSr)rcache_deactivaterrs r= oneshot_exitzProcess.oneshot_exitYs5 ..t444 ((.....r?c@tj|j|jSr)r8proc_basic_inforrrs r=rzProcess._proc_basic_info]s#DHd.?@@@r?c@tj|j|jSr)r8 proc_credrrrs r=rzProcess._proc_credbs~dh(9:::r?c|jdkrdStj|j|jdS)Nrswapper)rr8 proc_namerrstriprs r=rz Process.namegs7 8q==9~dh(9::AA&IIIr?c|}|sdS|d}tjj|vrtj|sOtjtj||}tj|r@tj|r!tj |tj r|Stj |}tj d dD]}tjtj||}tj|r#tj |tj r|cSdS)NrzrPATH:)cmdlinerWrsepisabsabspathrcwdisfileaccessX_OKbasenameenvironsplit)rrexer possible_exes r=rz Process.exens[,,.. 2aj 7;#  7==%% Egoobgll488::s&C&CDD c"" GNN3'' Ic27++  '""3''CJv&,,S11 $ $D7??27<<c+B+BCCL|,, $IlBG44 $####rr?c4tj|jSr)r8 proc_argsrrs r=rzProcess.cmdlines~dh'''r?c4tj|jSr)r8 proc_environrrs r=rzProcess.environs ***r?cL|tdS)Nr$r proc_info_maprs r=r$zProcess.create_time$$&&}]'CDDr?cL|tdS)Nr&rrs r=r&zProcess.num_threadsr r?ctj|j}g}|D]1\}}}tj|||}||2|s#t j|jd|j|S)N/) r8rrrpthreadr~rWstatr)rrr thread_idutimestimers r=threadszProcess.threadss'11GG+2 ' '' 5% E5AAv&&&&  A4#4#4#4dhh?@@@Nr?inetc|t||j}|s#tj|jd|j|S)N)rr )rrrWrr)rrrQs r= connectionszProcess.connectionssGd222  = Gt000$((; < < < r?c4tj|jSr) cext_posix getpriorityrrs r=nice_getzProcess.nice_gets%dh///r?c6tj|j|Sr)r setpriorityr)rvalues r=nice_setzProcess.nice_sets%dh666r?cd|td|_|jS)Nr!)rr rrs r=r!z Process.ppids'**,,]6-BC zr?cd|\}}}}}}tj|||Srrrpuids)rreal effectivesaved_s r=uidsz Process.uidss2*.//*;*;'i1a}T9e444r?cd|\}}}}}}tj|||Srr!)rr&r#r$r%s r=gidsz Process.gidss2*.//*;*;'1ay%}T9e444r?c\tj|j|j}t j|Sr)r8proc_cpu_timesrrr pcputimes)rrRs r=rRzProcess.cpu_timess''$2CDD  ),,r?c|td}|dzdz |dzz}tjdD]#}tj|j|kr|cS$dS)Nr(liz /dev/**/*)rr globrWrst_rdev)rttydevdevs r=terminalzProcess.terminalsx&&((w)?@//B66F?K9[))  Cws||#v-- .tr?c|j} tj|d|jd}|dS#t $r"tj|d|jYdSwxYw)Nr z/cwd)rrWreadlinkrrrr)r procfs_pathresults r=rz Process.cwds~'  [ TXXX!FGGF==%% %     G{{{DHH5 6 6 644 s3=(A)(A)c|}|tddz}|tddz}t||S)Nr"ir#)rr r))rrQr"r#s r= memory_infozProcess.memory_infosI##%%-&'$.-&'$.C~~r?c|td}t|dS)Nr'?)rr  PROC_STATUSESr)rcodes r=r'zProcess.statuss3$$&&}X'>?  s+++r?c tjddt|jgtjtj}|\}}t rd||fD\}}d|vrt|j|j tj d|}g}|D]\}}| }| dr |dd}|d krQ|tj|t#||S) Nz/usr/bin/procfilesz-nrcVg|]&}|tjj'SrHr`rJs r=rMz&Process.open_files..rr?zno such processz (\d+): S_IFREG.*\s*.*name:(.*)\nz//rzcannot be retrieved)rdrerrrfrgrlowerrrrfindallrj startswithr~r popenfiler)rrnr]r^ procfilesrrrs r= open_fileszProcess.open_filess<  2D#dh--H$.OJO M M M  999(.'7999NFF   . .$*55 5JBFKK ! = =HB::< 8q==12:D,=,=,=txxxHIIJJJr?cLtjtj|jSr)rpctxswr8proc_num_ctx_switchesrrs r=num_ctx_switcheszProcess.num_ctx_switchess!~  ' 1 13 3r?NcBtj|j||jSr)rwait_pidrr)rtimeouts r=waitz Process.waits 7DJ???r?c tj|j\}}}}n=#t$r0t |jst |j|jwxYwtj||||Sr) r8rrOSErrorrrrrpio)rrcwcrbwbs r= io_counterszProcess.io_counterss !%!6tx!@!@BBB   "$(++>'$*===   ;r2r2.. .s !:A)rr)&__name__ __module__ __qualname____doc__ __slots__rrrrr rrrrrrr$r& HAS_THREADSrrrrr!r'r)rRr3rr9memory_full_infor'rErGrKrOHAS_PROC_IO_COUNTERSrWrHr?r=rrJs<;;CCCI... ---///AA_A;;_;JJ_J _4((_(++_+EE_EEE_E         _ 00_077_7_55_555_5--_-___ #,,_, ,KK_K 33_3@@@_@ /  / /  / / / / /r?r)F)r)er[rr/rWrrdrb collectionsrrzrrrr8rrr r r r r rrrrr_compatrrrr__extra__all__hasattrr]HAS_NET_IO_COUNTERSr_ getpagesize PAGE_SIZEAF_LINKSIDL STATUS_IDLESZOMB STATUS_ZOMBIESACTIVESTATUS_RUNNINGSSWAPSSTOPSTATUS_STOPPEDr<TCPS_ESTABLISHEDCONN_ESTABLISHED TCPS_SYN_SENT CONN_SYN_SENT TCPS_SYN_RCVD CONN_SYN_RECVTCPS_FIN_WAIT_1CONN_FIN_WAIT1TCPS_FIN_WAIT_2CONN_FIN_WAIT2TCPS_TIME_WAITCONN_TIME_WAIT TCPS_CLOSED CONN_CLOSETCPS_CLOSE_WAITCONN_CLOSE_WAIT TCPS_LAST_ACK CONN_LAST_ACK TCPS_LISTEN CONN_LISTEN TCPS_CLOSING CONN_CLOSINGPSUTIL_CONN_NONE CONN_NONErdictr r)pfullmemr*r/r>rErRrNrZrprrdisk_io_countersr|r{rrrrrrrrrobjectrrHr?r=rs#"  """"""!!!!!!))))))!!!!!!######$$$$$$++++++$$$$$$$$$$$$''''''""""""""""""""""""&&&&&&$$$$$$'''''' gdN++ gd$566wt%788 "J " $ $   Iw"J%L'(J&J&   73--'0'0/g('1-g)w+7,          "z&5%.))  J{$H$H$H I I  7MMMNN555 @@@333 (((  # # #===(  8& +*O.J 0JJJ OOO *^/^/^/^/^/f^/^/^/^/^/r?