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-312.pyc
�

y)�]�����ddlmZddlZddlZddlZddlZddlmZddlmZddl	m
Z
Gd�de�ZGd�d	e
�Zd
�Zdd�Zdd�ZGd
�de
�ZGd�de
�ZGd�de
�ZGd�de
�Zy)�)�datetimeN)�getProcessOutputAndValue)�
encode_values)�to_timestampc��eZdZdZy)�CommandErrorz:Raised when an external command returns a non-zero status.N)�__name__�
__module__�__qualname__�__doc__���8/usr/lib/python3/dist-packages/landscape/lib/sysstats.pyrr
s��Drrc�t�eZdZd	d�Zed��Zed��Zed��Zed��Zed��Z	ed��Z
y)
�MemoryStatsc�$�i}t|�D]@}d|vs�|jdd�\}}|dvs�"t|j�d�||<�B|ddz|_|d|dz|d	zdz|_|d
dz|_|ddz|_y)N�:�)�MemTotal�SwapFree�	SwapTotal�MemFree�Buffers�Cachedrrirrrrr)�open�split�int�total_memory�free_memory�
total_swap�	free_swap)�self�filename�data�line�key�values      r�__init__zMemoryStats.__init__s�������N�D��d�{�!�Z�Z��Q�/�
��U��0�0� #�E�K�K�M�!�$4� 5�D��I�#�!��,��4��� ��O�d�9�o�=� ��N�+�/3�4����{�+�t�3����j�)�T�1��rc�4�|j|jz
S�N)rr�r"s r�used_memoryzMemoryStats.used_memory"s��� � �4�#3�#3�3�3rc�4�|j|jz
Sr*)r r!r+s r�	used_swapzMemoryStats.used_swap&s��������/�/rc�L�|jt|j�zdzS�N�d)r�floatrr+s r�free_memory_percentagez"MemoryStats.free_memory_percentage*s#��� � �5��):�):�#;�;�s�B�Brc�l�|jdk(ry|jt|j�zdzS�Nrgr1)r r!r2r+s r�free_swap_percentagez MemoryStats.free_swap_percentage.s.���?�?�a����N�N�U�4�?�?�%;�;�s�B�Brc� �d|jz
Sr0)r3r+s r�used_memory_percentagez"MemoryStats.used_memory_percentage5s���T�0�0�0�0rc�@�|jdk(ryd|jz
Sr5)r r6r+s r�used_swap_percentagez MemoryStats.used_swap_percentage9s"���?�?�a�����2�2�2�2rN)z
/proc/meminfo)r	r
rr(�propertyr,r.r3r6r8r:r
rrrrs���
2��4��4��0��0��C��C��C��C��1��1��3��3rrc�z�ttj�}tddg|��}d�}|j	|�S)N�whoz-q)�envc���|\}}}|dk7rt|jd���|jdd�d}|jd�}tt	|j���S)Nr�ascii�
r)r�decoder�sorted�set)�args�stdout_data�stderr_data�status�
first_lines     r�parse_outputz)get_logged_in_users.<locals>.parse_outputEsk��+/�(��[�&��Q�;��{�1�1�'�:�;�;� �&�&�u�a�0��3�
��&�&�w�/�
��c�*�*�*�,�-�.�.r)r�os�environr�addCallback)rL�resultrJs   r�get_logged_in_usersrOAs8���B�J�J�'�G�
%�e�d�V��
A�F�/����l�+�+rc��t|d�5}|j�}ddd�j�\}}t|�S#1swY�'xYw)z�
    This parses a file in /proc/uptime format and returns a floating point
    version of the first value (the actual uptime).
    �rN)r�readlinerr2)�uptime_file�ufiler$�up�idles     r�
get_uptimerWOsC��

�k�3�	�5��~�~���
 ��z�z�|�H�B����9��
 �	�s�A�A
c#�K�|�$tjjd�rd}nd}tjj|�r2ttj|��D]}t||����yy�w)Nz/sys/class/thermalz/proc/acpi/thermal_zone)rK�path�isdirrC�listdir�ThermalZone)�thermal_zone_path�	zone_names  r�get_thermal_zonesr_Zsf����� �
�7�7�=�=�-�.� 4�� 9��	�w�w�}�}�&�'���
�
�+<� =�>�I��/��;�;�?�(�s�A9A;c��eZdZdZdZdZd�Zy)r\Nc���||_tjj||�|_tjj|jd�}tjj	|�r{	t|�5}|j
�}	t|j��dz|_	d|_
dj|j|j�|_ddd�yytjj|jd�}tjj	|�rpt|�D]a}|jd�s�|ddj�|_	|jj!�\}}t|�|_	||_
�cyy#t$rY��wxYw#1swY��xYw#t$rYywxYw#t$rY��wxYw)N�tempg@�@�Cz	{:.1f} {}�temperatureztemperature:�)�namerKrY�join�isfilerrRr�strip�temperature_value�temperature_unit�formatrd�
ValueError�EnvironmentError�
startswithr)r"�	base_pathrf�temperature_path�fr%r'�units        rr(zThermalZone.__init__ks�����	��G�G�L�L��D�1��	��7�7�<�<��	�	�6�:��
�7�7�>�>�*�+�
��*�+�q��:�:�<�D��14�T�Z�Z�\�1B�V�1K��.�03��-�+6�+=�+=� $� 6� 6��8M�8M�,O��(�,�+� "�w�w�|�|�D�I�I�}�E���w�w�~�~�.�/� �!1�2�D����~�6�+/���9�?�?�+<��(�!�*.�*:�*:�*@�*@�*B�K�E�4�58��Z�D�2�48�D�1�
3�0��
&�����,�+��$�
��
�� *�!� �!�s[�7G�F:�AF+�'G�34G�+	F7�4F:�6F7�7F:�:G�?G�	G�G�	G!� G!)r	r
rrdrjrkr(r
rrr\r\es���K�����!rr\c� �eZdZdZdZd�Zd�Zy)�	LoginInfoz=Information about a login session gathered from wtmp or utmp.�hi32s4s32s256shhiiiiiii20sc��tj|j|�}|d|_|d|_|j|d�|_|j|d�|_|j|d�|_|j|d�|_	|d|_
|d|_|d	|_tj|d
�|_|d|_y)Nrr��������	�)�struct�unpack�
RAW_FORMAT�
login_type�pid�_strip_and_decode�
tty_device�id�username�hostname�termination_status�exit_status�
session_idr�utcfromtimestamp�
entry_time�remote_ip_address)r"�raw_data�infos   rr(zLoginInfo.__init__�s����}�}�T�_�_�h�7���q�'�����7����0�0��a��9����(�(��a��1����.�.�t�A�w�7��
��.�.�t�A�w�7��
�"&�q�'�����7����q�'���"�3�3�D��G�<���!%�b���rc�B�|jd�jd�S)z>Helper method to strip b"" and return a utf-8 decoded string.�zutf-8)rirB)r"�
bytestrings  rr�zLoginInfo._strip_and_decode�s������&�-�-�g�6�6rN)r	r
rrr�r(r�r
rrruru�s��G�.�J�
*�7rruc�"�eZdZdZd�Zd�Zd�Zy)�LoginInfoReaderzwReader parses C{/var/log/wtmp} and/or C{/var/run/utmp} files.

    @file: Initialize the reader with an open file.
    c�b�||_tjtj�|_yr*)�_filer��calcsizerur��_struct_length)r"�files  rr(zLoginInfoReader.__init__�s ����
�$�o�o�i�.B�.B�C��rc#�<K�	|j�}|sy|����w)z2Returns a generator that yields LoginInfo objects.N)�	read_next)r"r�s  r�
login_infozLoginInfoReader.login_info�s%������>�>�#�D����J�
�s�c��|jj|j�}|r#t|�|jk(rt	|�Sy)z9Returns login data or None if no login data is available.N)r��readr��lenru)r"r$s  rr�zLoginInfoReader.read_next�s;���z�z���t�2�2�3���C��I��!4�!4�4��T�?�"�rN)r	r
rrr(r�r�r
rrr�r��s���
D��rr�c�,�eZdZdZdZ		dd�Zd�Zd�Zy)�	BootTimesNc�.�||_||_||_yr*)�	_filename�_boots_newer_than�_shutdowns_newer_than)r"r#�boots_newer_than�shutdowns_newer_thans    rr(zBootTimes.__init__�s��!���!1���%9��"rc�4�g}g}t|jd�5}t|�}|j|_|j
|_|j�D]�}|jjd�s�t|j�}|jdk(r(||jkDr|j|�||_�k|jdk(s�{||jkDs��|j|�||_��	ddd�||fS#1swY||fSxYw)N�rb�~�reboot�shutdown)rr�r�r��
_last_bootr��_last_shutdownr�r�rorr�r��append)r"�reboot_times�shutdown_times�login_info_file�readerr��	timestamps       r�	get_timeszBootTimes.get_times�s�������
�$�.�.�$�
'�?�$�_�5�F�"�4�4�D�O�"&�"<�"<�D���)�)�+���?�?�-�-�c�2� ,�T�_�_� =�I��
�
��1�%����7�$�+�+�I�6�*3����-�-�:�5�%��(;�(;�;�&�-�-�i�8�.7��+�,�(� �^�+�+�!(� �^�+�+�s�AD�8AD�D�$D�Dc��|j�-ttj�t�z
�|_|jSr*)r�r�timerWr+s r�get_last_boot_timezBootTimes.get_last_boot_time�s/���?�?�"�!�$�)�)�+�
��"<�=�D�O����r)z
/var/log/wtmprr)r	r
rr�r�r(r�r�r
rrr�r��s!���J��N� /�:;�:�,�*rr�)z/proc/uptimer*)rrK�os.pathr�r��twisted.internet.utilsr�landscape.lib.encodingr�landscape.lib.timestampr�	Exceptionr�objectrrOrWr_r\rur�r�r
rr�<module>r�sx���	��
��;�0�0�E�9�E�-3�&�-3�`,��<�"!�&�"!�J7��7�<�f��<"��"r