
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!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r„e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ƒr‚d}n$tjjdƒr¢d}|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|ƒsŠd	S d	}d	}	d	}
|d
k rª|dkrªd}|| |  koÈ|| d kn  rÚ|dkrÚd}	||k ræd}
||	|
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-