CiscoTool_v1/netmiko_Api/utils/updateIOS.py

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