HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/landscape/lib/__pycache__/sysstats.cpython-38.pyc
U

y)�]��@s�ddlmZddlZddlZddlZddlZddlmZddlmZddl	m
Z
Gdd�de�ZGdd	�d	e
�Zd
d�Zdd
d�Zddd�ZGdd�de
�ZGdd�de
�ZGdd�de
�ZGdd�de
�ZdS)�)�datetimeN)�getProcessOutputAndValue)�
encode_values)�to_timestampc@seZdZdZdS)�CommandErrorz:Raised when an external command returns a non-zero status.N)�__name__�
__module__�__qualname__�__doc__�rr�8/usr/lib/python3/dist-packages/landscape/lib/sysstats.pyr
src@s^eZdZddd�Zedd��Zedd��Zedd	��Zed
d��Zedd
��Z	edd��Z
dS)�MemoryStats�
/proc/meminfocCs�i}t|�D]8}d|kr|�dd�\}}|dkrt|��d�||<q|dd|_|d|d|d	d|_|d
d|_|dd|_dS)N�:�)�MemTotal�SwapFree�	SwapTotal�MemFree�Buffers�Cachedrrirrrrr)�open�split�int�total_memory�free_memory�
total_swap�	free_swap)�self�filename�data�line�key�valuerrr�__init__s��zMemoryStats.__init__cCs|j|jS�N)rr�rrrr�used_memory"szMemoryStats.used_memorycCs|j|jSr%)rrr&rrr�	used_swap&szMemoryStats.used_swapcCs|jt|j�dS�N�d)r�floatrr&rrr�free_memory_percentage*sz"MemoryStats.free_memory_percentagecCs&|jdkrdS|jt|j�dSdS�Nrgr*)rrr+r&rrr�free_swap_percentage.s
z MemoryStats.free_swap_percentagecCs
d|jSr))r,r&rrr�used_memory_percentage5sz"MemoryStats.used_memory_percentagecCs|jdkrdSd|jSdSr-)rr.r&rrr�used_swap_percentage9s
z MemoryStats.used_swap_percentageN)r)rrr	r$�propertyr'r(r,r.r/r0rrrrr
s





r
cCs,ttj�}tddg|d�}dd�}|�|�S)NZwhoz-q)�envcSsJ|\}}}|dkr t|�d���|�dd�d}|�d�}tt|����S)Nr�ascii�
r)r�decoder�sorted�set)�argsZstdout_dataZstderr_data�status�
first_linerrr�parse_outputEs

z)get_logged_in_users.<locals>.parse_output)r�os�environr�addCallback)r=�resultr;rrr�get_logged_in_usersAs
r@�/proc/uptimec	Cs2t|d��}|��}W5QRX|��\}}t|�S)z�
    This parses a file in /proc/uptime format and returns a floating point
    version of the first value (the actual uptime).
    �r)r�readlinerr+)Zuptime_fileZufiler Zup�idlerrr�
get_uptimeOsrEccsN|dkrtj�d�rd}nd}tj�|�rJtt�|��D]}t||�Vq8dS)Nz/sys/class/thermalz/proc/acpi/thermal_zone)r<�path�isdirr6�listdir�ThermalZone)Zthermal_zone_pathZ	zone_namerrr�get_thermal_zonesZsrJc@s eZdZdZdZdZdd�ZdS)rINc	Cs4||_tj�||�|_tj�|jd�}tj�|�r�zdt|��R}|��}z.t|���d|_	d|_
d�|j	|j
�|_Wnt
k
r�YnXW5QRXWntk
r�YnXn�tj�|jd�}tj�|��r0t|�D]Z}|�d�r�|dd���|_z"|j��\}}t|�|_	||_
Wq�t
k
�r,Yq�Xq�dS)NZtempg@�@�Cz	{:.1f} {}�temperatureztemperature:�)�namer<rF�join�isfilerrCr�strip�temperature_value�temperature_unit�formatrL�
ValueError�EnvironmentError�
startswithr)r�	base_pathrNZtemperature_path�fr!r#Zunitrrrr$ks:
�



zThermalZone.__init__)rrr	rLrRrSr$rrrrrIesrIc@s$eZdZdZdZdd�Zdd�ZdS)�	LoginInfoz=Information about a login session gathered from wtmp or utmp.Zhi32s4s32s256shhiiiiiii20scCs�t�|j|�}|d|_|d|_|�|d�|_|�|d�|_|�|d�|_|�|d�|_	|d|_
|d|_|d	|_t
�|d
�|_|d|_dS)Nrr��������	�)�struct�unpack�
RAW_FORMATZ
login_type�pid�_strip_and_decode�
tty_device�id�username�hostnameZtermination_statusZexit_statusZ
session_idr�utcfromtimestamp�
entry_timeZremote_ip_address)r�raw_data�inforrrr$�s




zLoginInfo.__init__cCs|�d��d�S)z>Helper method to strip b"" and return a utf-8 decoded string.�zutf-8)rQr5)rZ
bytestringrrrrh�szLoginInfo._strip_and_decodeN)rrr	r
rfr$rhrrrrrZ�srZc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�LoginInfoReaderzwReader parses C{/var/log/wtmp} and/or C{/var/run/utmp} files.

    @file: Initialize the reader with an open file.
    cCs||_t�tj�|_dSr%)�_filerd�calcsizerZrf�_struct_length)r�filerrrr$�szLoginInfoReader.__init__ccs|��}|sq|VqdS)z2Returns a generator that yields LoginInfo objects.N)�	read_next)rrprrr�
login_info�szLoginInfoReader.login_infocCs,|j�|j�}|r(t|�|jkr(t|�SdS)z9Returns login data or None if no login data is available.N)rs�readru�lenrZ)rr rrrrw�szLoginInfoReader.read_nextN)rrr	r
r$rxrwrrrrrr�s
rrc@s.eZdZdZdZd
dd�Zdd�Zdd	�ZdS)�	BootTimesN�
/var/log/wtmprcCs||_||_||_dSr%)�	_filename�_boots_newer_than�_shutdowns_newer_than)rrZboots_newer_thanZshutdowns_newer_thanrrrr$�szBootTimes.__init__c	Cs�g}g}t|jd���}t|�}|j|_|j|_|��D]d}|j�	d�r6t
|j�}|jdkrv||jkrv|�
|�||_q6|jdkr6||jkr6|�
|�||_q6W5QRX||fS)N�rb�~Zreboot�shutdown)rr}rrr~�
_last_bootr�_last_shutdownrxrirWrrnrk�append)rZreboot_timesZshutdown_timesZlogin_info_file�readerrp�	timestamprrr�	get_times�s(

�

�
zBootTimes.get_timescCs$|jdkrtt��t��|_|jSr%)r�r�timerEr&rrr�get_last_boot_time�s
zBootTimes.get_last_boot_time)r|rr)rrr	r�r�r$r�r�rrrrr{�s�
r{)rA)N)rr<Zos.pathrdr�Ztwisted.internet.utilsr�landscape.lib.encodingrZlandscape.lib.timestampr�	Exceptionr�objectr
r@rErJrIrZrrr{rrrr�<module>s 0

%