Guest User

Untitled

a guest
Dec 5th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.14 KB | None | 0 0
  1. #!/usr/bin/env python
  2. import pexpect as px
  3. import subprocess
  4. import time
  5.  
  6. class IP(object):
  7.     def __init__(self, oct4 = 1, oct3 = 2, oct2 = 201, oct1 = 10, mask=16):
  8.         self.oct4 = oct4
  9.         self.oct3 = oct3
  10.         self.oct2 = oct2
  11.         self.oct1 = oct1
  12.         self.mask = mask
  13.  
  14.     def __str__(self):
  15.         return "%d.%d.%d.%d"%(self.oct1, self.oct2, self.oct3, self.oct4)
  16.  
  17.     def with_mask(self, mask=None):
  18.         mask = mask or self.mask
  19.         return "%s/%s"%(str(self),mask)
  20.  
  21. def wait_for(ip):
  22.     while subprocess.call(["ping","-c","1",str(ip)]):
  23.         time.sleep(1)
  24.         print ".",
  25.  
  26. init_ip = "10.90.90.90"
  27. tftp    = "10.90.90.10"
  28.  
  29. def fname(num=None):
  30.     if not num:
  31.         return "3528.conf"
  32.     else:
  33.         return "3528_%d.conf"%num
  34.  
  35. for num in range(28,45):
  36.     print "------- %.3d -------"%num
  37.     print "Waiting for ping."
  38.     wait_for(init_ip)
  39.  
  40.     ch = px.spawn("telnet %s"%init_ip)
  41.     ch.expect("UserName:")
  42.     print "Telnet to %s success"%init_ip
  43.  
  44.     ch.sendline("")
  45.     ch.expect("DES-3528:admin#")
  46.     print "Starting to download %s"%firmware
  47.     ch.sendline("download firmware_fromTFTP %s src_file %s" % (tftp ,firmware) )
  48.     ch.expect("DES-3528:admin#")
  49.  
  50.     print "Rebooting...",
  51.     ch.sendline("reboot")
  52.     ch.expect(px.EOF)
  53.     print "Link closed. Waiting for ping."
  54.  
  55.     wait_for(init_ip)
  56.     ch = px.spawn("telnet %s"%init_ip)
  57.     ch.expect("UserName:")
  58.     print "Telnet to %s success"%init_ip
  59.  
  60.     ip = IP(num)
  61.  
  62.     subprocess.call("cp",fname(),fname(num))
  63.     subprocess.call("sed","-i",fname(num),"s,%s/,%s/,"%IP(),IP(num))
  64.  
  65.     ch.sendline("")
  66.     ch.expect("DES-3528:admin#")
  67.     print "Starting to loading config %s"%fname(num)
  68.  
  69.     ch.sendline("download cfg_fromTFTP %s src_file %s"%(tftp,fname(num)))
  70.  
  71.     print "Waiting for switch on new ip"
  72.     wait_for(ip)
  73.     time.sleep(5)
  74.  
  75.     ch = px.spawn("telnet %s"%init_ip)
  76.     ch.expect("UserName:")
  77.     ch.sendline("archim")
  78.     ch.expect("PassWord:")
  79.     ch.sendline("password")
  80.     ch.expect("DES-3528:admin#")
  81.     ch.sendline("save")
  82.     ch.expect("DES-3528:admin#")
  83.  
  84. print "All done"
Add Comment
Please, Sign In to add comment