%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /lib/python3.9/site-packages/ansible/modules/__pycache__/
Upload File :
Create Path :
Current File : //lib/python3.9/site-packages/ansible/modules/__pycache__/service_facts.cpython-39.opt-1.pyc

a

�)g�B�@s�ddlmZmZmZeZdZdZdZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZGdd	�d	e�ZGd
d�de�ZGdd
�d
e�ZGdd�de�ZGdd�de�Zdd�Zedkr�e�dS)�)�absolute_import�division�print_functionak
---
module: service_facts
short_description: Return service state information as fact data
description:
     - Return service state information as fact data for various service management utilities.
version_added: "2.5"
requirements: ["Any of the following supported init systems: systemd, sysv, upstart, openrc, AIX SRC"]
extends_documentation_fragment:
  -  action_common_attributes
  -  action_common_attributes.facts
attributes:
    check_mode:
        support: full
    diff_mode:
        support: none
    facts:
        support: full
    platform:
        platforms: posix
notes:
  - When accessing the C(ansible_facts.services) facts collected by this module,
    it is recommended to not use "dot notation" because services can have a C(-)
    character in their name which would result in invalid "dot notation", such as
    C(ansible_facts.services.zuul-gateway). It is instead recommended to
    using the string value of the service name as the key in order to obtain
    the fact data value like C(ansible_facts.services['zuul-gateway'])
  - AIX SRC was added in version 2.11.
author:
  - Adam Miller (@maxamillion)
z�
- name: Populate service facts
  ansible.builtin.service_facts:

- name: Print service facts
  ansible.builtin.debug:
    var: ansible_facts.services
a
ansible_facts:
  description: Facts to add to ansible_facts about the services on the system
  returned: always
  type: complex
  contains:
    services:
      description: States of the services with service name as key.
      returned: always
      type: complex
      contains:
        source:
          description:
          - Init system of the service.
          - One of C(rcctl), C(systemd), C(sysv), C(upstart), C(src).
          returned: always
          type: str
          sample: sysv
        state:
          description:
          - State of the service.
          - 'This commonly includes (but is not limited to) the following: C(failed), C(running), C(stopped) or C(unknown).'
          - Depending on the used init system additional states might be returned.
          returned: always
          type: str
          sample: running
        status:
          description:
          - State of the service.
          - Either C(enabled), C(disabled), C(static), C(indirect) or C(unknown).
          returned: systemd systems or RedHat/SUSE flavored sysvinit/upstart or OpenBSD
          type: str
          sample: enabled
        name:
          description: Name of the service.
          returned: always
          type: str
          sample: arp-ethers.service
N)�
AnsibleModule)�get_best_parsable_localec@seZdZdd�ZdS)�BaseServicecCs
||_dS)N)�module)�selfr�r
�A/usr/lib/python3.9/site-packages/ansible/modules/service_facts.py�__init__eszBaseService.__init__N)�__name__�
__module__�__qualname__rr
r
r
rrcsrc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�ServiceScanServicec	Cs�|j�d|j�\}}}|dkr0tj�d�s0dS|dkrL|j�d||f�tjdtj	d�}|�
|�D]6}|�d�}|�d	�d
kr�d}nd}||d
d�||<qfdS)Nz%s --status-all�z/etc/init.drz'Unable to query 'service' tool (%s): %sz*^\s*\[ (?P<state>\+|\-) \]\s+(?P<name>.+)$)�flags�name�state�+�running�stopped�sysv�rr�source)r�run_command�service_path�os�path�exists�warn�re�compile�M�finditer�group)	r	�services�rc�stdout�stderr�p�match�service_name�
service_stater
r
r�_list_sysvinitks
z!ServiceScanService._list_sysvinitcCs�t�d�}|j�d|j�\}}}|dkr<|j�d|�nz|�dd�}|�d�D]b}|�|�}|sfqR|�	d�}	|�	d	�}
|�	d
�}|�	d�r�|�	d�}nd}|	||
dd
�}
|
||	<qRdS)NzR^\s?(?P<name>.*)\s(?P<goal>\w+)\/(?P<state>\w+)(\,\sprocess\s(?P<pid>[0-9]+))?\s*$z%s listrz,Unable to query upstart for service data: %s�
��
r�goalr�pidZupstart)rrr2r)
r!r"rr�initctl_pathr �replace�splitr+r%)r	r&r*r'r(r)Zreal_stdout�line�mr,Zservice_goalr-r3Zpayloadr
r
r�
_list_upstart~s"





z ServiceScanService._list_upstartcCs�t�d�}|jjd|jdd�\}}}d}|�d�D]}|�|�r4d}q4|s�t�d�}d}|�d�D]}|�|�rdd}qd|r�|jjd|jdd�\}}}n$d	|vr�|jjd
|jdd�\}}}|�d�D]�}|�|�}	|	r�|	�d�}
d}d
}|	�d�dk�rd}|jjd|j|
fdd�\}}}|}|dv�r4d}n8|�	�}
dD]&}||
v�r@|j�
d|
��ql�q@d}|
||dd�}|||
<q�dS)Nz�(?P<service>.*?)\s+[0-9]:(?P<rl0>on|off)\s+[0-9]:(?P<rl1>on|off)\s+[0-9]:(?P<rl2>on|off)\s+[0-9]:(?P<rl3>on|off)\s+[0-9]:(?P<rl4>on|off)\s+[0-9]:(?P<rl5>on|off)\s+[0-9]:(?P<rl6>on|off)z%sT�Zuse_unsafe_shellFr1z"(?P<service>.*?)\s+(?P<rl0>on|off)z%s -l --allservicesz--listz	%s --list�servicer�disabledZrl3�on�enabledz%s %s status)rr)�rootZ
permissionznot in sudoerszDInsufficient permissions to query sysV service "%s" and their statesr�rr�statusr)r!r"rr�chkconfig_pathr6r+r%r�lowerr )r	r&r*r'r(r)Z	match_anyr7Zp_simpler8r,r-Zservice_status�output�x�service_datar
r
r�_list_rh�sL�




 


zServiceScanService._list_rhcCs�i}|jjd|jdd�\}}}|jjd|jdd�\}}}|�d�D]N}	|	�d�}
t|
�dkrbqF|
d��}|
d	��}|s�d||<qF|��||<qF|�d�D]H}	|	��}
t|
�dkr�q�|
d}|
d	}
||}|||
d
d�}|||<q�dS)Nz)%s -a -s -m 2>&1 | grep '^ ' | tr -d '[]'Tr:z%s show -v 2>&1 | grep '|'r1�|�r�Zopenrc)r�	runlevelsrr)rr�rc_status_path�rc_update_pathr6�len�strip)r	r&Zall_services_runlevelsr'r(r)Zrc_uZstdout_uZstderr_ur7�	line_datar,rKr-Zservice_runlevelsrFr
r
r�_list_openrc�s*

zServiceScanService._list_openrccCs�i}|j�d�|_|j�d�|_|j�d�|_|j�d�|_|j�d�|_|jrn|jdurn|jdurn|�|�|jr�|jdur�|�|�n0|jr�|�	|�n|jdur�|jdur�|�
|�|S)Nr;Z	chkconfigZinitctlz	rc-statusz	rc-update)r�get_bin_pathrrBr4rLrMr.r9rGrQ)r	r&r
r
r�gather_services�s

z"ServiceScanService.gather_servicesN)r
rrr.r9rGrQrSr
r
r
rris
1rc@s8eZdZegd��Zdd�Zdd�Zdd�Zdd	�Zd
S)�SystemctlScanService)z	not-foundZmasked�failedcCs@ztdd�}Wnty"YdS0|D]}d|vr(dSq(dS)Nz/proc/1/comm�rF�systemdT)�open�IOError)r	�fr7r
r
r�systemd_enabled�sz$SystemctlScanService.systemd_enabledcCs�|jjd|dd�\}}}|dkr4|j�d|�n�dd�|�d�D�D]n}d	}d
}|��}	|jD] }
|
|	vrb|
}|	dd�}	q�qb|	d}|	d}|	d
dkr�d}|||dd�||<qHdS)Nz-%s list-units --no-pager --type service --allTr:rz%Could not list units from systemd: %scSsg|]}d|vr|�qS�z.servicer
��.0Zsvc_liner
r
r�
<listcomp>	�z9SystemctlScanService._list_from_units.<locals>.<listcomp>r1r�unknownrJrI�rrWr@)rrr r6�
BAD_STATES)r	�systemctl_pathr&r'r(r)r7Z	state_val�
status_val�fieldsZbadr,r
r
r�_list_from_unitss"
z%SystemctlScanService._list_from_unitsc
	Cs
|jjd|dd�\}}}|dkr4|j�d|�n�dd�|�d�D�D]�}z|��dd	�\}}Wn&ty�|jjd
�|�d�Yn0||vr�|jjd||fdd�\}}}d
}	|s�|dkr�|�dd���}	||	|dd�||<qH||d|j	vrH|||d<qHdS)Nz2%s list-unit-files --no-pager --type service --allTr:rz.Could not get unit files data from systemd: %scSsg|]}d|vr|�qSr\r
r]r
r
rr_%r`z>SystemctlScanService._list_from_unit_files.<locals>.<listcomp>r1rIz=Malformed output discovered from systemd list-unit-files: {0})�msgz!%s show %s --property=ActiveStaterar0zActiveState=rWr@rA)
rrr r6�
IndexErrorZ	fail_json�formatr5�rstriprc)
r	rdr&r'r(r)r7r,rerr
r
r�_list_from_unit_filess z*SystemctlScanService._list_from_unit_filescCs@i}|��r<|jjdddgd�}|r<|�||�|�||�|S)NZ	systemctlz/usr/binz/usr/local/bin)Zopt_dirs)r[rrRrgrl)r	r&rdr
r
rrS4sz$SystemctlScanService.gather_servicesN)	r
rr�	frozensetrcr[rgrlrSr
r
r
rrT�s
rTc@seZdZdd�ZdS)�AIXScanServicec
Cs�i}t��dkr�|j�d�}|r�|j�d|�\}}}|dkrT|j�d||f�nt|�d�D]h}|��}t|�dkrxq^|ddkr�q^|d}|d	d
kr�d}	n|d	dkr�d
}	nd}	||	dd�||<q^|S)NZAIXZlssrcz%s -arz.lssrc could not retrieve service data (%s): %sr1rIZ	Subsystem���ZactiverZinoperativerra�srcr)�platform�systemrrRrr r6rN)
r	r&Z
lssrc_pathr'r(r)r7rPr,r-r
r
rrSBs*zAIXScanService.gather_servicesN)r
rrrSr
r
r
rrn@srnc@seZdZdd�Zdd�ZdS)�OpenBSDScanServicecCsdg}|j�d|j|f�\}}}d|��vr:|j�d�n&|�d�D]}|dkrTqDqD|�|�qD|S)Nz%s ls %szneeds root privilegeszrcctl requires root privilegesr1r0)rr�
rcctl_pathrCr r6�append)r	�cmdZsvcsr'r(r)�svcr
r
r�query_rcctl_szOpenBSDScanService.query_rcctlcs�i�|j�d�|_|jr�|�d�D]}|dd��|<q"|�d�D]}�|�ddi�q@|�d�D]}�|�dd	i�qb�fd
d��D��fdd��D�|�d
�D]}�|�dd
i�q��S)NZrcctl�all)rrr=rAr>�startedrrcs0g|](}�|�d�dur�|�ddi��qS)rANr<��get�update�r^rw�r&r
rr_|r`z6OpenBSDScanService.gather_services.<locals>.<listcomp>cs0g|](}�|�d�dur�|�ddi��qS)rNrr{r~rr
rr_r`rU)rrRrtrxr})r	rwr
rrrSlsz"OpenBSDScanService.gather_servicesN)r
rrrxrSr
r
r
rrs]s
rscCs�tt�dd�}t|�}t||d�|_ttttf}i}|D]"}||�}|��}|r8|�	|�q8t
|�dkrvtddd�}ntt|d�d�}|jfi|��dS)	NT)Z
argument_specZsupports_check_mode)�LANG�LC_ALLrz]Failed to find any services. This can be due to privileges or some other configuration issue.)Zskippedrhr)Z
ansible_facts)r�dictrZrun_command_environ_updaterrTrnrsrSr}rNZ	exit_json)r�localeZservice_modulesZall_servicesZ
svc_moduleZsvcmodrw�resultsr
r
r�main�sr��__main__)Z
__future__rrr�typeZ
__metaclass__Z
DOCUMENTATIONZEXAMPLESZRETURNrrqr!Zansible.module_utils.basicrZ"ansible.module_utils.common.localer�objectrrrTrnrsr�r
r
r
r
r�<module>s$ 	)
N+

Zerion Mini Shell 1.0