B Œ=Ý_{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;„ZUd€szcpu_times..)r1Ú per_cpu_timesr(Úzip)Úretr2r2r3Ú cpu_times}sr=cCst ¡}dd„|DƒS)z5Return system per-CPU times as a list of named tuplescSsg|] }t|Ž‘qSr2)r()r7r8r2r2r3r9†sz!per_cpu_times..)r1r:)r<r2r2r3r:ƒsr:cCs$y t d¡Stk rdSXdS)z0Return the number of logical CPUs in the system.ÚSC_NPROCESSORS_ONLNN)ÚosÚsysconfÚ ValueErrorr2r2r2r3Úcpu_count_logical‰s rBcCsrd}tj|dtjtjd}| ¡\}}tr@dd„||fDƒ\}}|jdkrZtd||fƒ‚| ¡ ¡}t |ƒppdS)Nzlsdev -Cc processorT)ÚshellÚstdoutÚstderrcSsg|]}| tjj¡‘qSr2)ÚdecodeÚsysrDÚencoding)r7r8r2r2r3r9˜sz&cpu_count_physical..rz%r command error %s) Ú subprocessÚPopenÚPIPEÚ communicaterÚ returncodeÚ RuntimeErrorÚstripÚ splitlinesÚlen)ÚcmdÚprDrEZ processorsr2r2r3Úcpu_count_physical’s     rTcCs t ¡\}}}}t ||||¡S)z*Return various CPU stats as a named tuple.)r1Ú cpu_statsrZ scpustats)Z ctx_switchesZ interruptsZsoft_interruptsZsyscallsr2r2r3rU srUFc Cslg}t ¡}xZ|D]R}|\}}}}|dkr.d}|s>t|ƒjs>qd}} t |||||| ¡} | | ¡qW|S)zReturn system disk partitions.ZnoneÚN)r1Údisk_partitionsÚ disk_usager,rZ sdiskpartÚappend) ÚallÚretlistZ partitionsÚ partitionZdeviceZ mountpointZfstypeZoptsZmaxfileZmaxpathÚntupler2r2r3rW°s    rWéÿÿÿÿc Cs°tj}||kr.td|d dd„|Dƒ¡fƒ‚tj|\}}t |¡}g}x`|D]X}|\}} } } } } }| |krpqP| |krzqPt|| | | | | t|dkr–|ndd}| |¡qPW|S)zˆReturn socket connections. If pid == -1 return system-wide connections (as opposed to connections opened by one process only). z+invalid %r kind argument; choose between %sz, cSsg|] }t|ƒ‘qSr2)Úrepr)r7r8r2r2r3r9Ùsz#net_connections..r^N)Úpid) rZ conn_tmaprAÚjoinr1Únet_connectionsr Ú TCP_STATUSESrY)ÚkindÚ_pidZcmapZfamiliesÚtypesÚrawlistr<ÚitemÚfdZfamZtype_ZladdrZraddrr%r`Úntr2r2r3rbÒs"  rbc Csàttdœ}tdd„tƒDƒƒ}i}x¸|D]°}t |¡\}}d}d}tjdd|gtjtjd}|  ¡\} } t r‚d d„| | fDƒ\} } |j dkr¸t   d | ¡} | d k r¸t|  d ¡ƒ}|  d ¡}| |t¡}t ||||¡||<q(W|S)z)Get NIC stats (isup, duplex, speed, mtu).)ZFullZHalfcSsg|] }|d‘qS)rr2)r7r8r2r2r3r9ísz net_if_stats..rVrz/usr/bin/entstatz-d)rDrEcSsg|]}| tjj¡‘qSr2)rFrGrDrH)r7r8r2r2r3r9ûsz"Running: (\d+) Mbps.*?(\w+) DuplexNrr)r r ÚsetÚ net_if_addrsr1Ú net_if_statsrIrJrKrLrrMÚreÚsearchÚintÚgroupÚgetrrZ snicstats) Z duplex_mapÚnamesr<ÚnameZisupZmtuZduplexZspeedrSrDrEZ re_resultr2r2r3rmés.      rmcCst ¡S)z:The system boot time expressed in seconds since the epoch.)r1Ú boot_timer2r2r2r3rusruc Cs`g}t ¡}d}xJ|D]B}|\}}}}}} |s0q||kr.)r?Úlistdirr r2r2r2r3Úpids+srzcCstj tj tƒt|ƒd¡¡S)z&Check for the existence of a unix pid.Zpsinfo)r?ÚpathÚexistsrar Ústr)r`r2r2r3Ú pid_exists0sr~cst ˆ¡‡fdd„ƒ}|S)zƒCall callable into a try/except clause and translate ENOENT, EACCES and EPERM in NoSuchProcess or AccessDenied exceptions. c szyˆ|f|ž|ŽSttfk rTt|jƒs>t|j|jƒ‚nt|j|j|jƒ‚Yn"tk rtt |j|jƒ‚YnXdS)N) rrr~r`rÚ_namerÚ_ppidrr)ÚselfÚargsÚkwargs)Úfunr2r3Úwrapper9s z wrap_exceptions..wrapper)Ú functoolsÚwraps)r„r…r2)r„r3Úwrap_exceptions5srˆ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)rIrJr}r`rKrLrÚlowerrrrnÚfindallrOÚ startswithrYrZ popenfilerp)rrSrDrEZ procfilesr[rir{r2r2r3Ú open_filesøs$      zProcess.open_filescCs(|jdkrdStt d|j|jf¡ƒS)Nrz%s/%s/fd)r`rQr?ryrŠ)rr2r2r3Únum_fdss zProcess.num_fdscCstjt |j¡ŽS)N)rZpctxswr1Zproc_num_ctx_switchesr`)rr2r2r3Únum_ctx_switchesszProcess.num_ctx_switchesNcCst |j||j¡S)N)rZwait_pidr`r)rZtimeoutr2r2r3Úwaitsz Process.waitcCsXyt |j¡\}}}}Wn.tk rFt|jƒs@t|j|jƒ‚‚YnXt ||||¡S)N) r1rr`ÚOSErrorr~rrrZpio)rZrcZwcÚrbÚwbr2r2r3Ú io_counterss zProcess.io_counters)r¥)N)&Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú __slots__rŒrrrˆr rrŽrtr r•ržr"r$Ú HAS_THREADSr¤r¦r©r¬rr²r³r=r·r™r»Zmemory_full_infor%rÂrÃrÄrÅÚHAS_PROC_IO_COUNTERSrÉr2r2r2r3r‰JsJ                  r‰)F)r^)erÍr†rµr?rnrIrGÚ collectionsrrVrrrr1rr§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_NONErcÚdictr¡r'Zpfullmemr(r+r4r5r=r:rBrTrUZdisk_io_countersrXrWrlrrbrmrurwrzr~rˆÚobjectr‰r2r2r2r3Ús¤                              %