U í·€gç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..)r2Ú per_cpu_timesr(Úzip©Úretr3r3r4Ú cpu_times~srAcCst ¡}dd„|DƒS)z6Return system per-CPU times as a list of named tuples.cSsg|] }t|Ž‘qSr3)r(r9r3r3r4r<‡sz!per_cpu_times..)r2r=r?r3r3r4r=„sr=cCs(z t d¡WStk r"YdSXdS)z0Return the number of logical CPUs in the system.ÚSC_NPROCESSORS_ONLNN)ÚosÚsysconfÚ ValueErrorr3r3r3r4Úcpu_count_logicalŠs rFcCsvdddg}tj|tjtjd}| ¡\}}trDdd„||fDƒ\}}|jdkr^td||fƒ‚| ¡ ¡}t |ƒptdS) NZlsdevz-CcÚ processor©ÚstdoutÚstderrcss|]}| tjj¡VqdS©N©ÚdecodeÚsysrIÚencodingr9r3r3r4Ú ˜sz"cpu_count_cores..rz%r command error %s) Ú subprocessÚPopenÚPIPEÚ communicaterÚ returncodeÚ RuntimeErrorÚstripÚ splitlinesÚlen)ÚcmdÚprIrJZ processorsr3r3r4Úcpu_count_cores“s  ÿ   r\cCs t ¡\}}}}t ||||¡S)z*Return various CPU stats as a named tuple.)r2Ú cpu_statsrZ scpustats)Z ctx_switchesZ interruptsZsoft_interruptsZsyscallsr3r3r4r]¡sÿr]Fc Cs\g}t ¡}|D]F}|\}}}}|dkr,d}|s.rhN©Úpid) rZ conn_tmaprEÚjoinr2Únet_connectionsrÚ TCP_STATUSESrb)ÚkindÚ_pidZcmapZfamiliesÚtypesÚrawlistr@ÚitemÚfdZfamÚtype_ÚladdrÚraddrr%rkÚntr3r3r4rmÒs8ÿÿ ø rmcCsö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)rr3r9r3r3r4r<ösz net_if_stats..r_rz/usr/bin/entstatz-drHcss|]}| tjj¡VqdSrKrLr9r3r3r4rPsznet_if_stats..z"Running: (\d+) Mbps.*?(\w+) DuplexNrrú,Úrunning)rr ÚsetÚ net_if_addrsÚ cext_posixZ net_if_mtuZ net_if_flagsrQrRrSrTrrUÚreÚsearchÚintÚgrouprlÚgetr rZ snicstats)Z duplex_mapÚnamesr@ÚnameZmtuÚflagsZduplexÚspeedr[rIrJZ re_resultZ output_flagsZisupr3r3r4Ú net_if_statsós>   ý ÿ  ÿ   rˆcCst ¡S)z:The system boot time expressed in seconds since the epoch.)r2Ú boot_timer3r3r3r4r‰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)r2ÚusersrZsuserrb) rdrrrŠrsr)ÚttyÚhostnameZtstampZ user_processrkrxr3r3r4r‹$s r‹cCsdd„t tƒ¡DƒS)z7Returns a list of PIDs currently running on the system.cSsg|]}| ¡rt|ƒ‘qSr3)Úisdigitrr9r3r3r4r<>szpids..)rCÚlistdirrr3r3r3r4Úpids<srcCstj tj tƒt|ƒd¡¡S)z&Check for the existence of a unix pid.Zpsinfo)rCÚpathÚexistsrlrÚstrrjr3r3r4Ú 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ƒ‚YnXdSrK) rrr”rkr Ú_namer Ú_ppidrr )ÚselfÚargsÚkwargs©Úfunr3r4ÚwrapperKs z wrap_exceptions..wrapper)Ú functoolsÚwraps)r›rœr3ršr4Ú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.*name:(.*)\nz//rzcannot be retrieved)rQrRr“rkrSrTrÚlowerr r•rÚfindallrWÚ startswithrbrZ popenfiler)r—r[rIrJZ procfilesrdrtr‘r3r3r4Ú open_filess,ý ÿ       zProcess.open_filescCs(|jdkrdStt d|j|jf¡ƒS)Nrz%s/%s/fd)rkrYrCrr¢r¦r3r3r4Únum_fds)s zProcess.num_fdscCstjt |j¡ŽSrK)rZpctxswr2Zproc_num_ctx_switchesrkr¦r3r3r4Únum_ctx_switches/szProcess.num_ctx_switchesNcCst |j||j¡SrK)rZwait_pidrkr•)r—Útimeoutr3r3r4Úwait3sz Process.waitcCsXzt |j¡\}}}}Wn.tk rFt|jƒs@t|j|jƒ‚‚YnXt ||||¡SrK) r2rrkÚOSErrorr”r r•rZpio)r—ÚrcÚwcÚrbÚwbr3r3r4Ú 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¾rmrÁrÄrrÊrËrArÑr±rÕZmemory_full_infor%rÜrÝrÞràÚHAS_PROC_IO_COUNTERSrær3r3r3r4r ]sv                       r )F)rh)drêrrÎrCrrQrNÚ collectionsrr_rrrr2rr~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_NONErnÚdictrºr'Zpfullmemr(r+r5r7rAr=rFr\r]Zdisk_io_countersrar`r}rrmrˆr‰r‹rr”rŸr r3r3r3r4ÚsÌ                      û ôø     !,