U Ã|ýfìHã@sÖdZddlZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl m Z ddl mZdd l mZdd l mZdd l mZdd l mZdd l mZddl mZddl mZddl mZddl mZddl mZddlmZddlmZddlmZddlmZdgZe e dƒZ!e e dƒZ"e e dƒZ#e $¡Z%ej&Z&e j'e j(e j)e j*e j+e j,e j-e j,e j.e j/iZ0e j1e j2e j3e j4e j5e j6e j7e j8e j9e j:e j;e je j?e j@e jAe jBe jCe jDe jEe jFe jGe jHi ZIeJdddddddd d!ZKed"d#d$gƒZLeLZMed%d&d'd(d)gƒZNed*d+d,d-d.d/gƒZOd0d1„ZPd2d3„ZQd4d5„ZRd6d7„ZSd8d9„ZTd:d;„ZUdszcpu_times..)r3Ú per_cpu_timesr(Úzip©Úretr4r4r5Ú cpu_times~srBcCst ¡}dd„|DƒS)z6Return system per-CPU times as a list of named tuples.cSsg|] }t|Ž‘qSr4)r(r:r4r4r5r=‡sz!per_cpu_times..)r3r>r@r4r4r5r>„sr>cCs(z t d¡WStk r"YdSXdS)z0Return the number of logical CPUs in the system.ÚSC_NPROCESSORS_ONLNN)ÚosÚsysconfÚ ValueErrorr4r4r4r5Úcpu_count_logicalŠs rGcCsvdddg}tj|tjtjd}| ¡\}}trDdd„||fDƒ\}}|jdkr^td||fƒ‚| ¡ ¡}t |ƒptdS) NZlsdevz-CcÚ processor©ÚstdoutÚstderrcss|]}| tjj¡VqdS©N©ÚdecodeÚsysrJÚencodingr:r4r4r5Ú ˜sz"cpu_count_cores..rz%r command error %s) Ú subprocessÚPopenÚPIPEÚ communicaterÚ returncodeÚ RuntimeErrorÚstripÚ splitlinesÚlen)ÚcmdÚprJrKZ processorsr4r4r5Úcpu_count_cores“s  ÿ   r]cCs t ¡\}}}}t ||||¡S)z*Return various CPU stats as a named tuple.)r3Ú cpu_statsrZ scpustats)Z ctx_switchesZ interruptsZsoft_interruptsZsyscallsr4r4r5r^¡sÿr^Fc Cs\g}t ¡}|D]F}|\}}}}|dkr,d}|s.riN©Úpid) rZ conn_tmaprFÚjoinr3Únet_connectionsrÚ TCP_STATUSESrc)ÚkindÚ_pidZcmapZfamiliesÚtypesÚrawlistrAÚitemÚfdÚfamÚtype_ÚladdrÚraddrr%rlÚntr4r4r5rnÒs8ÿÿ ø rncCsöttdœ}tdd„tƒDƒƒ}i}|D]Ê}t |¡}t |¡}d}d}tjdd|gtj tj d}|  ¡\} } t r†d d „| | fDƒ\} } |j dkr¼t  d | ¡} | d k r¼t|  d ¡ƒ}|  d¡}d |¡} d|k} | |t¡}t | |||| ¡||<q&|S)z)Get NIC stats (isup, duplex, speed, mtu).)ÚFullZHalfcSsg|] }|d‘qS)rr4r:r4r4r5r=ösz net_if_stats..r`rz/usr/bin/entstatz-drIcss|]}| tjj¡VqdSrLrMr:r4r4r5rQsznet_if_stats..z"Running: (\d+) Mbps.*?(\w+) DuplexNrrú,Úrunning)rr ÚsetÚ net_if_addrsÚ cext_posixZ net_if_mtuZ net_if_flagsrRrSrTrUrrVÚreÚsearchÚintÚgrouprmÚgetr rZ snicstats)Z duplex_mapÚnamesrAÚnameZmtuÚflagsZduplexÚspeedr\rJrKZ re_resultZ output_flagsZisupr4r4r5Ú net_if_statsós>   ý ÿ  ÿ   rŠcCst ¡S)z:The system boot time expressed in seconds since the epoch.)r3Ú boot_timer4r4r4r5r‹sr‹c Cs\g}t ¡}d}|D]B}|\}}}}}} |s.q||kr:d}t ||||| ¡} | | ¡q|S)z:Return currently connected users as a list of namedtuples.)z:0.0z:0Ú localhost)r3ÚusersrZsuserrc) rersrŒrtr)ÚttyÚhostnameZtstampZ user_processrlrzr4r4r5r$s rcCsdd„t tƒ¡DƒS)z7Returns a list of PIDs currently running on the system.cSsg|]}| ¡rt|ƒ‘qSr4)Úisdigitrƒr:r4r4r5r=>szpids..)rDÚlistdirrr4r4r4r5Úpids<sr’cCstj tj tƒt|ƒd¡¡S)z&Check for the existence of a unix pid.Zpsinfo)rDÚpathÚexistsrmrÚstrrkr4r4r5Ú pid_existsAsr–cst ˆ¡‡fdd„ƒ}|S)zƒCall callable into a try/except clause and translate ENOENT, EACCES and EPERM in NoSuchProcess or AccessDenied exceptions. c s|zˆ|f|ž|ŽWSttfk rVt|jƒs@t|j|jƒ‚nt|j|j|jƒ‚Yn"tk rvt |j|jƒ‚YnXdSrL) rrr–rlr Ú_namer Ú_ppidrr )ÚselfÚargsÚkwargs©Úfunr4r5ÚwrapperKs z wrap_exceptions..wrapper)Ú functoolsÚwraps)rržr4rœr5Úwrap_exceptionsFsr¡c@sxeZdZdZdddddgZdd„Zd d „Zd d „Zee d d„ƒƒZ ee dd„ƒƒZ edd„ƒZ edd„ƒZ edd„ƒZedd„ƒZedd„ƒZedd„ƒZerªedd„ƒZedAd d!„ƒZed"d#„ƒZed$d%„ƒZed&d'„ƒZed(d)„ƒZed*d+„ƒZed,d-„ƒZed.d/„ƒZed0d1„ƒZed2d3„ƒZeZed4d5„ƒZd6d7„Z ed8d9„ƒZ!ed:d;„ƒZ"edBd=d>„ƒZ#e$rted?d@„ƒZ%d.zno such processz (\d+): S_IFREG.*\s*.*name:(.*)\nz//rzcannot be retrieved)rRrSr•rlrTrUrÚlowerr r—rÚfindallrXÚ startswithrcrZ popenfilerƒ)r™r\rJrKZ procfilesrerur“r4r4r5Ú open_filess,ý ÿ       zProcess.open_filescCs(|jdkrdStt d|j|jf¡ƒS)Nrz%s/%s/fd)rlrZrDr‘r£r¨r4r4r5Únum_fds)s zProcess.num_fdscCstjt |j¡ŽSrL)rZpctxswr3Zproc_num_ctx_switchesrlr¨r4r4r5Únum_ctx_switches/szProcess.num_ctx_switchesNcCst |j||j¡SrL)rZwait_pidrlr—)r™Útimeoutr4r4r5Úwait3sz Process.waitcCsXzt |j¡\}}}}Wn.tk rFt|jƒs@t|j|jƒ‚‚YnXt ||||¡SrL) r3rrlÚOSErrorr–r r—rZpio)r™ÚrcÚwcÚrbÚwbr4r4r5Ú io_counters9s zProcess.io_counters)rÂ)N)&Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú __slots__r¥r©rªr¡rr¦r§r‡rºr¯r¸r"r$Ú HAS_THREADSrÁrnrÄrÇrrÍrÎrBrÔr³rØZmemory_full_infor%rßràrárãÚHAS_PROC_IO_COUNTERSrér4r4r4r5r¢]sv                       r¢)F)ri)drírŸrÑrDrrRrOÚ collectionsrr`rrrr3rr€rr r r r r rrrrZ_compatrrrrZ__extra__all__ÚhasattrrïZHAS_NET_IO_COUNTERSrðZ getpagesizeZ PAGE_SIZEZAF_LINKZSIDLZ STATUS_IDLEZSZOMBZ STATUS_ZOMBIEZSACTIVEZSTATUS_RUNNINGZSSWAPZSSTOPZSTATUS_STOPPEDrÚZTCPS_ESTABLISHEDZCONN_ESTABLISHEDZ TCPS_SYN_SENTZ CONN_SYN_SENTZ TCPS_SYN_RCVDZ CONN_SYN_RECVZTCPS_FIN_WAIT_1ZCONN_FIN_WAIT1ZTCPS_FIN_WAIT_2ZCONN_FIN_WAIT2ZTCPS_TIME_WAITZCONN_TIME_WAITZ TCPS_CLOSEDZ CONN_CLOSEZTCPS_CLOSE_WAITZCONN_CLOSE_WAITZ TCPS_LAST_ACKZ CONN_LAST_ACKZ TCPS_LISTENZ CONN_LISTENZ TCPS_CLOSINGZ CONN_CLOSINGZPSUTIL_CONN_NONEZ CONN_NONEroÚdictr¼r'Zpfullmemr(r,r6r8rBr>rGr]r^Zdisk_io_countersrbrarrrnrŠr‹rr’r–r¡r¢r4r4r4r5ÚsÌ                      û ôø     !,