Skip to content
Snippets Groups Projects
Select Git revision
  • a9efe026a3938946cf03a4fcaaabd42f9c67eb76
  • main default protected
  • threads
3 results

PortFlipper.py

Blame
  • rick.mollard's avatar
    rick.mollard authored
    a758a00c
    History
    PortFlipper.py 4.71 KiB
    from urllib3 import exceptions  # Prevent SSL Self-Signed Certificate Error
    import requests  # Creation Of New Object
    import urllib3
    from netmiko import (ConnectHandler,NetmikoTimeoutException)  # SSH Connection
    import socket  # DNS Lookup
    import time  # For Waiting
    import CampusSelector
    import SwitchCommands
    
    
    def main(ArubaUsername, ArubaPassword):
        urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)  # Disable Certificate Warning
    
        # Get the Campus or Switch IP Address
        campus = CampusSelector.Campus_Selector()
        ip = campus[1]
        campus_selection = campus[2]
        campus = campus[0]
    
        # Get the Role we want to bounce
        role = CampusSelector.Role_Selector()
    
        if campus_selection == "6":
            hostname = socket.getfqdn(ip)
            print('Current Switch:', hostname, ":", ip)
    
            # Create Session Object
            session = requests.session()
    
            # Create SSH Connection
            ssh = ConnectHandler(
                device_type="aruba_procurve",
                host=ip,
                username=ArubaUsername,
                password=ArubaPassword,
            )
    
            try:
                cli = ssh.send_command(f"show port-access clients")
                parse = cli.split("\n")
                for line in parse:
                    line = line.lstrip()
                    if role in line:
                        interface = line.split(" ")[0]
                        if interface == 'd':
                            interface = line.split(" ")[1]
                            print("Non-Tunneled Device, Skip:", interface)
                        else:
                            interface = line.split(" ")[0]
                            # int_config = [f'interface {interface}', 'shut']
                            SwitchCommands.shutport(ssh, interface)
                            # config_send = ssh.send_config_set(int_config)
                            print("Sending Command: ", interface, "\n Port Shutdown - Waiting 2 Seconds")
                            # int_config = [f'interface {interface}', 'no shut']
                            SwitchCommands.noshutport(ssh, interface)
                            # config_send = ssh.send_config_set(int_config)
                            print("Sending Command: ", interface, "\n Flipped - Waiting 1 Second For Next Port")
            finally:
                print("Logging Out From Switch", hostname, ip)
                ssh.disconnect()
                time.sleep(1)
    
        if campus_selection != "6":
            with open(campus) as file:
                while line := file.readline().rstrip():
                    ip = line
                    hostname = socket.getfqdn(ip)
                    print('Current Switch:', hostname, ":", ip)
                    # Create Session Object
                    session = requests.session()
    
                    # Create SSH Connection
                    try:
                        ssh = ConnectHandler(
                            device_type="aruba_procurve",
                            host=ip,
                            username=ArubaUsername,
                            password=ArubaPassword,
                        )
                        try:
                            cli = ssh.send_command(f"show port-access clients")
                            parse = cli.split("\n")
                            for line in parse:
                                line = line.lstrip()
                                if role in line:
                                    interface = line.split(" ")[0]
                                    if interface == 'd':
                                        interface = line.split(" ")[1]
                                        print("Non-Tunneled Device, Skip:", interface)
                                    else:
                                        interface = line.split(" ")[0]
                                        # int_config = [f'interface {interface}', 'shut']
                                        SwitchCommands.shutport(ssh, interface)
                                        # config_send = ssh.send_config_set(int_config)
                                        print("Sending Command: ", interface, "\n Port Shutdown - Waiting 2 Seconds")
                                        # int_config = [f'interface {interface}', 'no shut']
                                        SwitchCommands.noshutport(ssh, interface)
                                        # config_send = ssh.send_config_set(int_config)
                                        print("Sending Command: ", interface, "\n Flipped - Waiting 1 Second For Next Port")
    
                        finally:
                            print("Logging Out From Switch", hostname, ip)
                            ssh.disconnect()
                    except (NetmikoTimeoutException) as error:
                        print("Switch is not responding----->  " + ip)
                        print("Switch is not responding----->  " + ip)
                        print("Switch is not responding----->  " + ip)