HEX
Server: Apache
System: Linux 185.122.168.184.host.secureserver.net 5.14.0-570.60.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Nov 5 05:00:59 EST 2025 x86_64
User: barbeatleanalyti (1024)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //proc/self/root/lib/fm-agent/library/__pycache__/agent_util.cpython-39.pyc
a

��i�$�@s~dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	zddl
Z
WneyrddlZ
Yn0zddl
Z
WnddlmZ
Yn0ejddkr�ddlmZnddlmZdejvr�dejd<e�ej�dd	�ZeZiZd
Zdd�Zd
d�Zdd�ZdZdZdZ gd�Z!d(dd�Z"d)dd�Z#d*dd�Z$dd�Z%d d!�Z&d"d#�Z'Gd$d%�d%e
j(�Z)Gd&d'�d'e*�Z+dS)+zEThis file is a library of some essential classes for our agent's use.�N�3)�BytesIO)�StringIO�LC_ALL�CcCsRzt�t|��WStyLtt�ti�kr>td|�YSt�|�YS0dS)N�float)�localeZatof�str�	Exception�type�__builtins__r)�value�r�'/usr/lib/fm-agent/library/agent_util.py�custom_float&sr�<cCs|D]}|rdSqdS)NTFr��iterable�elementrrr�any5srcCs|D]}|sdSqdS)NFTrrrrr�all<srcCs"|j|j|jddddS)N�ii@B)Zmicroseconds�seconds�days)�	timedeltarrr�
total_secondsCs
��r��)z/usr/local/sbinz/usr/local/binz	/usr/sbinz/usr/binz/sbinz/binFcCs�dd�}tj�|�\}}|r*||�rv|SnLdtjvr8dSt�tjd�tj�t�D]"}tj�||�}||�rR|SqR|r�t	d|��ndSdS)NcSstj�|�ot�|tj�S�N)�os�path�exists�access�X_OK)�fpathrrr�is_exe\szwhich.<locals>.is_exe�PATHz%r not found)
rr �split�environ�	itertools�chain�pathsep�ADDITIONAL_SEARCH_PATHS�joinr
)Zprogram�excr%r$�fnamer Zexe_filerrr�which[s 
�
r0�cCs tj|d|ddd�}|j�d�S)NFT)�shell�timeout�check�capture_outputzutf-8)�
subprocess�run�stdout�decode)Zcommand_argsr3�prrr�run_commandss
�r;T�cs�|dur|��}t�d�}|rdt�|�}	|	rdt��|	�d�|krd|�d|�|	�d�|	�d�fSd}
dtj�	�k�r,t
j|||t
jt
j|d	�}
|s�dSz|
j
|d
�\}}Wnxt
j�y&}
z\|
jg}|r�|�t|
j��|D],}zt�|tj�Wq�t�yYq�0q�WYd}
~
dSd}
~
00�nGdd
�d
t���fdd�}t
j|||t
jt
j|d	�}
|�sldS|dk�r�|dk�r�t�tj|�t�|�z.|
�
�\}}|dk�r�|dk�r�t�d�Wnh��y.|
jg}|�r�|�t|
j��|D].}zt�|tj�Wnt�y"Yn0�q�YdS0|
j}|�s@|}|�d�}|�rr|�d|�||t��d�t|<|�d|||f�||fS)zNRun a command line call with a timeout after which it will be forcibly killed.F�execute_command�	timestampz9Retrieved information from the local cache timeout for %s�retcode�outputN�darwin)r2�cwdr8�stderr�env)r3)i����z Timeout exceeded, process killedc@seZdZdS)zexecute_command.<locals>.AlarmN)�__name__�
__module__�__qualname__rrrr�Alarm�srHcs��dSrr)�signum�frame�rHrr�
alarm_handler�sz&execute_command.<locals>.alarm_handler���r�utf8zCreated cache for cmd %s)r?r@r>z	%s: %s %s)r'�logging�	getLogger�LOCAL_CACHE_RESULTS�get�time�debug�sys�platform�lowerr6�Popen�PIPE�communicate�TimeoutExpired�pid�extend�get_process_childrenr�kill�signal�SIGKILL�OSErrorr
�SIGALRM�alarm�
returncoder9)�cmdrBr2Z	kill_treer3rD�blockZ
cache_timeout�logZ
cached_resultr:r8rCZte�pidsr\rLr?r@rrKrr=zs�

����


�
r=cCs8tjd|dtjtjd�}|��\}}dd�|��D�S)z?Helper method for killing off child processes when they timeoutz ps --no-headers -o pid --ppid %dT)r2r8rCcSsg|]}t|��qSr)�int)�.0r:rrr�
<listcomp>��z(get_process_children.<locals>.<listcomp>)r6rXrYrZr')r\r:r8rCrrrr^�s�r^cCs`z&|dd}t|���d}|dWStyZt��dd�\}}t�|�|�Yn0dS)NZNetworkSettingsZNetworksrZ	IPAddressr)�list�valuesr
rU�exc_inforO�	exception)�	containerZnetworksZnetwork�t�errr�get_container_ip�s

rucKsBztj|fi|��WSty<tj|��fi|��YS0dSr)�json�loads�	TypeErrorr9)�val�kwargsrrr�
json_loadssr{c@seZdZddd�Zdd�ZdS)�UnixHTTPConnection�	localhostcKs tjj||fi|��||_dSr)�httplib�HTTPConnection�__init__r )�selfr �hostrzrrrr�szUnixHTTPConnection.__init__cCs&t�tjtj�}|�|j�||_dSr)�socketZAF_UNIXZSOCK_STREAM�connectr �sock)r�r�rrrr�szUnixHTTPConnection.connectN)r})rErFrGr�r�rrrrr|
s
r|c@sDeZdZdZdZeZdd�Zddd�Zdd	d
�Z	dd�Z
d
d�ZdS)�PluginZ	undefined�cCs||_t�d|j�|_dS)Nz	plugin %r)�schedulerOrP�textkeyrh)r�r�rrrr�$szPlugin.__init__Fc	Cs^t��}|jj}|�|i�}|r(g||<|�|g�}|�||f�t|�dkrZ|�d�qBdS)Ni�r)rSr��cached_results�
setdefault�append�len�pop)	r�r��optionr
�replace�now�cache�tcache�resultsrrr�cache_result*szPlugin.cache_resultrcCsbt��}|jj}|�|i�}|�|g�}g}||d�D]\}	}
|�||	|
f�q:|��|Sr)rSr�r�r�r��reverse)r�r�r�Znumr�r�r�r�ZretZstored�resultrrr�get_cache_results?szPlugin.get_cache_resultscCsiSrr)r��configrrr�get_metadataLszPlugin.get_metadatacCsdS)Nrr)r�r��datar�rrrr4OszPlugin.checkN)F)r)rErFrGr��descriptionrOrhr�r�r�r�r4rrrrr�s


r�)F)r1)NTTr<NTN),�__doc__rSrOrr)r6rUr`rr�rv�ImportError�
simplejsonr~�http.client�client�version�iorrr(�	setlocale�
LC_NUMERICrrrQZDEFAULT_CACHE_TIMEOUTrrrZ	SUPPORTEDZUNSUPPORTEDZ
MISCONFIGUREDr,r0r;r=r^rur{rr|�objectr�rrrr�<module>sb

	


	�
r