
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
;j                 @   s   d dl Z d dlZd dlmZmZmZmZ ejejddd Z	dd Z
ejejddd	 Zejejd
ddd Zedkrei  dS )    N)delivery_kitkcare	log_utilsutils)loggerc             C   s   | j  S )a  Send the DataPackage archive to the patch server.

    Upload errors are logged and swallowed (catch_errors), preserving
    the historical kernel-anomaly behavior.

    :param data_package: DataPackage instance to send
    :return: Upload name (package identifier)
    )send)data_package r	   -/usr/libexec/kcare/python/kcarectl/anomaly.pysend_data_package   s    r   c             C   sT   t j  }xFtj| D ]8\}}|| dkr*P dj||jdd}|j||d qW dS )zZadds recent files for the last hour to the given data package starting from the newest onei  z{0}/{1}/_)src_pathN)timer   Zsort_files_by_ctimeformatreplaceadd_file)filesr   Zarchive_prefixnowpathctimeZarcnamer	   r	   r
   copy_recent_files   s    r   c          3   C   s  t j }| tjjdr(|jdd tjjdr@|jdd |jdd |jd	d	 |jd
d tjjds|tjjdrd}n$tjjdrd}|jddd nd}|jd| td}|jdtj	|j
 d W d Q R X td}|jdtj	|j
 d W d Q R X |jddd |jd|  |jddd |jd d!jtj  yttj |d" W n4 tk
r } z|jd#j| W Y d d }~X nX yttj |d$ W n4 tk
r } z|jd%j| W Y d d }~X nX W d Q R X |S )&Nz/var/log/messagesmessagesztail -n10000 /var/log/messagesz/var/log/syslogZsyslogztail -n10000 /var/log/syslogzkcarectl.logz"tail -n10000 /var/log/kcarectl.logZdmesgZls_var_cache_kcarezls -lR /var/cache/kcare/z/usr/bin/rpmz/bin/rpmzFrpm -q -a --queryformat="%{N}|%{V}-%{R}|%{arch}|%{INSTALLTIME:date}\n"z/usr/bin/dpkgzJ/usr/bin/dpkg-query -W -f "${binary:Package}|${Version}|${Architecture}\n"zdpkg.logz/var/log/dpkg.log)r   zecho "unknown package manager"zpackages.listz/proc/versionZproc_version)Z
data_bytesz/proc/modulesZproc_modulesz
kcare.confz/etc/sysconfig/kcare/kcare.confzserver_info.jsonz
kdump.confz/etc/kdump.confZls_kdumpz
ls -lR {0}Zkdumpzfailed to copy kdumps:
{0}Zcrashreporterz+failed to copy crashreporter artifacts:
{0})r   ZKernelAnomalyPackageosr   existsZ
add_stdoutr   openr   bstrreadZadd_jsonr   r   Zget_kdump_rootr   Zlist_kdump_txt_files	ExceptionZ	log_errorZlist_crashreporter_log_files)server_infor   Zpackages_cmdfer	   r	   r
   prepare_kernel_anomaly_report*   sB    
"
"",r"   F)r   Zdefault_returnc             C   s  | d }t | d }t | jdp"d}t | d }| d }yt | d d }W n tttfk
rl   d}Y nX ||||||g}t|sd	S d	}d	}	d	}
|d
k r|dkrd}|| |  ko|| d kn  r|dkrd}	||k rd}
||	|
g}t|rtjdj|  dS d	S )z3taken from eportal - anomalies::detect_agent_rebootreasonuptimepatch_levelz-1	last_stoptsstater   Fi,     Ti  updatezAgent anomaly detected: {0})	intgetKeyError	TypeError
ValueErrorallr   loginfor   )r   r#   r$   r%   r&   r'   Zstate_tsZfieldsZ first_update_after_reboot_markerZcrash_soon_after_update_markerZno_proper_shutdown_markermarkersr	   r	   r
   detect_anomaly_   s8    
,
r4   __main__)r   r   kcarectlr   r   r   r   Zcatch_errorslogwarnr   r   r"   r4   __name__r	   r	   r	   r
   <module>   s   5-