HEX
Server: Apache
System: Linux 162-240-236-42.bluehost.com 3.10.0-1160.114.2.el7.x86_64 #1 SMP Wed Mar 20 15:54:52 UTC 2024 x86_64
User: bt667 (1004)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //usr/libexec/kcare/python/kcarectl/anomaly.pyo
�
��	ic@s�ddlZddlZddlZddlZddlZddlZddlZddlmZddl	m
Z
mZmZm
Z
mZmZmZddlmZer�ddlmZmZmZmZddlmZndefd��YZejd	ej�d
��Zd�Z d�Z!ejd	ej�d
��Z"ejd	ejde�d��Z#e$dkr�e"i�ndS(i����N(tNamedTemporaryFile(tauthtconfigt
http_utilstipv6_supporttkcaret	log_utilstutils(trun_command(tAnytDicttListtOptional(tSelftDataPackagecBs�eZdZd�Zed��Zd�Zdded�Z	d�Z
d�Zd�Zd�Z
d	�Zd
�Zejdej�d��Zd
�ZRS(s!based on DataPackage from eportalcCsd|_g|_d|_dS(Ni(tNonet_tart_errors_buffert_total_payload_size(tself((s-/usr/libexec/kcare/python/kcarectl/anomaly.pyt__init__s		cCs|j�}t|j�S(N(t_ensure_tar_createdtstrtname(Rttar((s-/usr/libexec/kcare/python/kcarectl/anomaly.pytarchive_path scCs�d}d}y.ttj|�dtdt�\}}}Wntk
r[}t|�}nX|r~|jdj||��n|dk	r�|j	|dt
j|dd��ndS(Ntcatch_stdouttcatch_stderrs!failed to dump stdout of {0}:
{1}t
data_bytestencodingsutf-8(RRtshlextsplittTruet	ExceptionRt	log_errortformattadd_fileRtbstr(Rtarcnametcmdtstdouttstderrt_te((s-/usr/libexec/kcare/python/kcarectl/anomaly.pyt
add_stdout&s.c	Cs|dkr'|dkr'td��n|j�}d}|dk	r�tjj|�sq|jdj|��dStjj|�}nt	|�}|j
|�s�|jdj|��dS|r�|j|�r�|jdj|��dSy`|r|j|d|�n1t
j|�}||_|j|tj|��|j|7_Wn,tk
rz}|jdj||��nXdS(Ns"No src_path or data_bytes providedisfile not found: {0}s no available space to store: {0}s)skip due to total payload size limit: {0}R&sfailed to store {0}: {1}(Rt
ValueErrorRtostpathtexistsR"R#tgetsizetlent_check_required_spacet_check_total_payload_limittaddttarfiletTarInfotsizetaddfiletiotBytesIORR!(	RR&tsrc_pathRtskip_limit_checkRt
entry_sizetinfoR+((s-/usr/libexec/kcare/python/kcarectl/anomaly.pyR$6s2	cCsoy(tjtj|dd�dd�}Wn-tk
rW}|jdj||��dSX|j|d|�dS(NtindentiRsutf-8sfailed to dump {0}:
{1}R(RR%tjsontdumpst	TypeErrorR"R#R$(RR&tdataRR+((s-/usr/libexec/kcare/python/kcarectl/anomaly.pytadd_jsonZs(cCs&tj|j�}|j|j|kS(N(R.tstatvfsRtf_frsizetf_bfree(RR>RF((s-/usr/libexec/kcare/python/kcarectl/anomaly.pyR3dscCstj|j|kS(N(Rt$KERNEL_ANOMALY_REPORT_MAX_SIZE_BYTESR(RR>((s-/usr/libexec/kcare/python/kcarectl/anomaly.pyR4jscCs3|j�}tj|dt�|jj|�dS(Nt	print_msg(tstripRtlogerrortFalseRtappend(Rt	error_msg((s-/usr/libexec/kcare/python/kcarectl/anomaly.pyR"oscCs�x�d
D]�}tddj|d�dt�}|j�yEtjdj|j�d	t�tjd
|jd|�|_	|SWqt
k
r�}tjj
|j�r�tj|j�nd|_	t|tj�s��q�qXqWtjd��dS(Nsw:xzsw:bz2sw:gztsuffixs.tar.{0}itdeletesCreating DataPackage: {0}RJRtmodes%No supported compression method found(sw:xzsw:bz2sw:gz(RR#RMtcloseRtloginfoRR6topenRR!R.R/R0tunlinkRt
isinstancetCompressionError(Rtcompression_modettmpfileterr((s-/usr/libexec/kcare/python/kcarectl/anomaly.pyt	__enter__us
"
	cCsu|jrDdj|j�d}|jddtj|�dt�n|jrq|jj�|rq|j�t	SntS(Ns
s
errors.logRR=(
RtjoinR$RR%R RRStremove_archiveRM(Rtexc_typetexc_valtexc_tbterrors((s-/usr/libexec/kcare/python/kcarectl/anomaly.pyt__exit__�s	%	

tloggercCs5|jr1tjj|j�r1tj|j�ndS(N(RR.R/R0RRV(R((s-/usr/libexec/kcare/python/kcarectl/anomaly.pyR^�scCs|jstd��n|jS(Ns/DataPackage should be used as a context manager(RtRuntimeError(R((s-/usr/libexec/kcare/python/kcarectl/anomaly.pyR�s	N(t__name__t
__module__t__doc__RtpropertyRR,RRMR$RER3R4R"R\RcRtcatch_errorsRtlogwarnR^R(((s-/usr/libexec/kcare/python/kcarectl/anomaly.pyRs		$	
					RdcCs�tjj|j�}d|kr4||jd�nd}ttj��|}tj	�d|}t
j|jd|dtj
��|S(s�Send the DataPackage archive to the patch server.

    :param data_package: DataPackage instance to send
    :return: Upload name (package identifier)
    t.ts/upload/kernel-anomaly/t
upload_urltauth_string(R.R/tbasenameRtfindRtuuidtuuid4Rtget_patch_serverRtupload_fileRtget_http_auth_string(tdata_packageRptexttupload_nameRn((s-/usr/libexec/kcare/python/kcarectl/anomaly.pytsend_data_package�s%	
cCs%idd6dd6ttj��d6S(Nitschema_versionskernel-anomalyttypettime_created(tintttime(((s-/usr/libexec/kcare/python/kcarectl/anomaly.pytmake_manifest_json�scCsutj�}xbtj|�D]Q\}}||dkr<Pndj||jdd��}|j|d|�qWdS(sZadds recent files for the last hour to the given data package starting from the newest oneis{0}/{1}t/R*R<N(RRtsort_files_by_ctimeR#treplaceR$(tfilesRwtarchive_prefixtnowR/tctimeR&((s-/usr/libexec/kcare/python/kcarectl/anomaly.pytcopy_recent_files�scCsgt�}|�Rtjjd�r5|jdd�ntjjd�rZ|jdd�n|jdd�|jd	d	�|jd
d�tjjd�s�tjjd
�r�d}n4tjjd�r�d}|jddd�nd}|jd|�td��)}|jddtj|j	���WdQXtd��)}|jddtj|j	���WdQX|jddd�|j
d|�|j
dt��|jddd �|jd!d"jt
j���ytt
j�|d#�Wn)tk
r}|jd$j|��nXytt
j�|d%�Wn)tk
r\}|jd&j|��nXWdQX|S('Ns/var/log/messagestmessagesstail -n10000 /var/log/messagess/var/log/syslogtsyslogstail -n10000 /var/log/syslogskcarectl.logs"tail -n10000 /var/log/kcarectl.logtdmesgtls_var_cache_kcaresls -lR /var/cache/kcare/s/usr/bin/rpms/bin/rpmsFrpm -q -a --queryformat="%{N}|%{V}-%{R}|%{arch}|%{INSTALLTIME:date}\n"s
/usr/bin/dpkgsJ/usr/bin/dpkg-query -W -f "${binary:Package}|${Version}|${Architecture}\n"sdpkg.logR<s/var/log/dpkg.logsecho "unknown package manager"s
packages.lists
/proc/versiontproc_versionRs
/proc/modulestproc_moduless
kcare.confs/etc/sysconfig/kcare/kcare.confsserver_info.jsons
manifest.jsons
kdump.confs/etc/kdump.conftls_kdumps
ls -lR {0}tkdumpsfailed to copy kdumps:
{0}t
crashreporters+failed to copy crashreporter artifacts:
{0}(RR.R/R0R,R$RURR%treadRER�R#Rtget_kdump_rootR�tlist_kdump_txt_filesR!R"tlist_crashreporter_log_files(tserver_infoRwtpackages_cmdtfR+((s-/usr/libexec/kcare/python/kcarectl/anomaly.pytprepare_kernel_anomaly_report�sD	$	(( tdefault_returncCsp|d}t|d�}t|jd�p/d�}t|d�}|d}yt|dd�}Wn tttfk
r�d}nX||||||g}t|�s�tSt}t}	t}
|d	kr�|d
kr�t}n|||ko||dknr"|dkr"t}	n||kr7t}
n||	|
g}t|�rltj	d
j
|��tStS(s3taken from eportal - anomalies::detect_agent_reboottreasontuptimetpatch_levels-1t	last_stopttststateii,i����itupdatesAgent anomaly detected: {0}(R~tgettKeyErrorRCR-tallRMR RRTR#(R�R�R�R�R�R�tstate_tstfieldst first_update_after_reboot_markertcrash_soon_after_update_markertno_proper_shutdown_markertmarkers((s-/usr/libexec/kcare/python/kcarectl/anomaly.pytdetect_anomalys8


	4			t__main__(%R:RAR.RR6RRrttempfileRtkcarectlRRRRRRRtkcarectl.process_utilsRRMttypingR	R
RRttyping_extensionsR
tobjectRRjRkRzR�R�R�R�Rf(((s-/usr/libexec/kcare/python/kcarectl/anomaly.pyt<module>s(4"�			
6$-