Select Git revision
PortFlipper.py
rick.mollard authored
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)