184 lines
11 KiB
Python
184 lines
11 KiB
Python
from netmiko import ConnectHandler, NetmikoAuthenticationException, ReadTimeout, ConnectionException, NetMikoTimeoutException
|
|
from getpass import getpass
|
|
from pprint import pprint
|
|
import sys
|
|
import time
|
|
|
|
R1 = {
|
|
'device_type':"cisco_ios_telnet",
|
|
'ip':sys.argv[2],
|
|
'username':"",
|
|
'password':"",
|
|
'port': sys.argv[3],
|
|
# 'password': '',
|
|
'secret':'',
|
|
}
|
|
check = ""
|
|
print(sys.argv[8])
|
|
# def config_ip_vlan(connect, vlan, name, rangePort, ip, netMask):
|
|
with ConnectHandler(**R1) as connect:
|
|
connect.enable()
|
|
|
|
if "switch" in sys.argv[8]:
|
|
connect.config_mode()
|
|
print("------Configure ip address vlan 1-------")
|
|
output = connect.send_config_set([
|
|
"inter vlan 1",
|
|
"ip address "+sys.argv[4]+" "+sys.argv[5],
|
|
"no shut",
|
|
"exit",
|
|
"ip default-gateway "+sys.argv[6],
|
|
"exit",
|
|
])
|
|
check = connect.send_command_timing( "ping 192.168.5.7", strip_prompt=False, strip_command=False, delay_factor=400, last_read=5.0, read_timeout=500)
|
|
output+=check
|
|
print(output)
|
|
if "router" in sys.argv[8]:
|
|
check += connect.send_command_timing( "show ip int bri", strip_prompt=False, strip_command=False, delay_factor=400)
|
|
listInterface = check.split("\n")
|
|
interface = []
|
|
for x in listInterface:
|
|
if "Ethernet" in x.split(" ")[0]:
|
|
interface.append(x.split(" ")[0])
|
|
# interface = listInterface[2].split(" ")[0]
|
|
print(interface[0])
|
|
connect.config_mode()
|
|
print("------Configure ip address interface "+interface[0]+ "-------")
|
|
output = connect.send_config_set([
|
|
"inter "+interface[0],
|
|
"ip address "+sys.argv[4]+" "+sys.argv[5],
|
|
"no shut",
|
|
"exit",
|
|
"ip route 0.0.0.0 0.0.0.0 "+sys.argv[6],
|
|
"exit",
|
|
])
|
|
check = connect.send_command_timing( "ping 192.168.5.7", strip_prompt=False, strip_command=False, delay_factor=400, last_read=5.0, read_timeout=500)
|
|
output+=check
|
|
check = connect.send_command_timing( "ping 192.168.5.7", strip_prompt=False, strip_command=False, delay_factor=400, last_read=5.0, read_timeout=500)
|
|
output+=check
|
|
print(output)
|
|
|
|
if "36_38" in sys.argv[8]:
|
|
if "0/5" in check:
|
|
print("Error: Can't connect to TFTP server")
|
|
else:
|
|
connect.enable()
|
|
check = connect.send_command_timing( "format flash:", strip_prompt=False, strip_command=False, delay_factor=400, last_read=2.0, read_timeout=500)
|
|
output += check
|
|
print(check)
|
|
if "[confirm]" in check:
|
|
check = connect.send_command_timing( "\n", strip_prompt=False, strip_command=False)
|
|
output += check
|
|
print(check)
|
|
if "[confirm]" in check:
|
|
output += connect.send_command_timing( "\n", strip_prompt=False, strip_command=False,last_read=5.0)
|
|
print(output)
|
|
check = connect.send_command_timing( "copy tftp://192.168.5.7/i/"+sys.argv[7]+" flash:", strip_prompt=False, strip_command=False, delay_factor=400, last_read=2.0, read_timeout=50000)
|
|
output += check
|
|
# time.sleep(240)
|
|
print(check)
|
|
if "?" in check:
|
|
output += connect.send_command_timing( "\n", strip_prompt=False, strip_command=False, delay_factor=400, last_read=15.0, read_timeout=5000000)
|
|
check = connect.send_command_timing( "request platform software package expand file flash:"+sys.argv[7], strip_prompt=False, strip_command=False, delay_factor=400, last_read=60.0, read_timeout=5000000)
|
|
output+=check
|
|
if "Invalid input" in check:
|
|
output +=connect.send_command_timing( "software expand file flash:"+sys.argv[7], strip_prompt=False, strip_command=False, delay_factor=400, last_read=60.0, read_timeout=5000000)
|
|
# connect.enable()
|
|
# connect.config_mode()
|
|
# output = connect.send_config_set(["config t","boot system switch all flash:packages.conf", "do wr"], read_timeout=5000000)
|
|
# output += connect.send_command("boot system switch all flash:packages.conf", expect_string='(config)#')
|
|
|
|
output += connect.send_config_set("boot system switch all flash:packages.conf")
|
|
check = connect.send_command_timing( "wr", strip_prompt=False, strip_command=False,last_read=5.0, read_timeout=5000000)
|
|
output += check
|
|
if "[confirm]" in check:
|
|
output += connect.send_command_timing( "\n", strip_prompt=False, strip_command=False,last_read=5.0)
|
|
# output +=connect.save_config()
|
|
# connect.enable()
|
|
# output += connect.send_command_timing( "wr", strip_prompt=False, strip_command=False,last_read=8.0)
|
|
connect.enable()
|
|
check = connect.send_command_timing( "reload", strip_prompt=False, strip_command=False, delay_factor=400)
|
|
output += check
|
|
if "[yes/no]" in check:
|
|
check1 = connect.send_command_timing( "no", strip_prompt=False, strip_command=False, delay_factor=400)
|
|
output+=check1
|
|
if "[yes/no]" in check1:
|
|
check2 = connect.send_command_timing( "no", strip_prompt=False, strip_command=False, delay_factor=400)
|
|
output+=check2
|
|
if "[yes/no]" in check2:
|
|
output = connect.send_command_timing( "no", strip_prompt=False, strip_command=False, delay_factor=400)
|
|
|
|
output += connect.send_command_timing( "\n", strip_prompt=False, strip_command=False, delay_factor=400)
|
|
print(output)
|
|
else:
|
|
# connect.config_mode()
|
|
# output += connect.send_command_timing( "boot system switch all flash:packages.conf", strip_prompt=False, strip_command=False,last_read=5.0)
|
|
# connect.enable()
|
|
#connect.config_mode()
|
|
# output += connect.send_command("boot system switch all flash:packages.conf", expect_string='(config)#')
|
|
# output +=connect.save_config()
|
|
output += connect.send_config_set("boot system switch all flash:packages.conf")
|
|
# output += connect.send_command_timing( "boot system switch all flash:packages.conf", strip_prompt=False, strip_command=False,last_read=5.0, read_timeout=5000000)
|
|
check = connect.send_command_timing( "wr", strip_prompt=False, strip_command=False,last_read=5.0, read_timeout=5000000)
|
|
output += check
|
|
if "[confirm]" in check:
|
|
output += connect.send_command_timing( "\n", strip_prompt=False, strip_command=False,last_read=5.0)
|
|
# output +=connect.save_config()
|
|
# output = connect.send_config_set(["config t","boot system switch all flash:packages.conf", "do wr"], read_timeout=5000000)
|
|
#connect.enable()
|
|
check = connect.send_command_timing( "reload", strip_prompt=False, strip_command=False, delay_factor=400)
|
|
output += check
|
|
if "[yes/no]" in check:
|
|
check1 = connect.send_command_timing( "no", strip_prompt=False, strip_command=False, delay_factor=400)
|
|
output+=check1
|
|
if "[yes/no]" in check1:
|
|
check2 = connect.send_command_timing( "no", strip_prompt=False, strip_command=False, delay_factor=400)
|
|
output+=check2
|
|
if "[yes/no]" in check2:
|
|
output += connect.send_command_timing( "no", strip_prompt=False, strip_command=False, delay_factor=400)
|
|
|
|
output += connect.send_command_timing( "\n", strip_prompt=False, strip_command=False, delay_factor=400)
|
|
print(output)
|
|
|
|
else:
|
|
if "0/5" in check:
|
|
print("Error: Can't connect to TFTP server")
|
|
|
|
else:
|
|
connect.enable()
|
|
check = connect.send_command_timing( "format flash:", strip_prompt=False, strip_command=False, delay_factor=400, last_read=2.0, read_timeout=50000)
|
|
output += check
|
|
print(check)
|
|
if "[confirm]" in check:
|
|
check = connect.send_command_timing( "\n", strip_prompt=False, strip_command=False)
|
|
output += check
|
|
print(check)
|
|
if "[confirm]" in check:
|
|
output += connect.send_command_timing( "\n", strip_prompt=False, strip_command=False,last_read=5.0)
|
|
print(output)
|
|
# time.sleep(180)
|
|
check = connect.send_command_timing( "copy tftp://192.168.5.7/i/"+sys.argv[7]+" flash:", strip_prompt=False, strip_command=False, delay_factor=400, last_read=3.0, read_timeout=50000)
|
|
output += check
|
|
# time.sleep(240)
|
|
print(check)
|
|
if "?" in check:
|
|
output += connect.send_command_timing( "\n", strip_prompt=False, strip_command=False, last_read=6.0, delay_factor=400, read_timeout=50000)
|
|
output += "\nENTER\n"
|
|
output += connect.send_command_timing("boot system flash:"+sys.argv[7], strip_prompt=False, strip_command=False, delay_factor=400)
|
|
output += connect.send_command_timing( "wr", strip_prompt=False, strip_command=False, delay_factor=400, last_read=10.0, read_timeout=500)
|
|
check = connect.send_command_timing( "reload", strip_prompt=False, strip_command=False, delay_factor=400)
|
|
output += check
|
|
if "[yes/no]" in check:
|
|
check1 = connect.send_command_timing( "no", strip_prompt=False, strip_command=False, delay_factor=400)
|
|
output+=check1
|
|
if "[yes/no]" in check1:
|
|
check2 = connect.send_command_timing( "no", strip_prompt=False, strip_command=False, delay_factor=400)
|
|
output+=check2
|
|
if "[yes/no]" in check2:
|
|
output = connect.send_command_timing( "no", strip_prompt=False, strip_command=False, delay_factor=400)
|
|
|
|
output += connect.send_command_timing( "\n", strip_prompt=False, strip_command=False, delay_factor=400)
|
|
print(output)
|
|
|
|
# print(output)
|
|
# return output |