yanglgzh 发表于 2018-7-10 13:07:09

Python与Cisco的事儿之四

#!/usr/bin/python  

  
from netmiko import ConnectHandler
  
from netmiko.ssh_exception import NetMikoTimeoutException
  
import time
  
import sys
  
import getpass
  
import datetime
  

  
class CiscoNetwork():
  
      def __init__(self,username,password):
  
               self.username = username
  
               self.password = password
  

  
      def CiscoDevice(self,iplist):
  
               self.device={'device_type':'cisco_ios',
  
                              'username':self.username,
  
                              'password':self.password,
  
                              'ip':iplist
  
                           }
  
               print('-'*100)
  
               print "[+]connect to network device... %s" %(iplist)
  
               self.connect = ConnectHandler(**self.device)
  
               self.connect.enable()
  

  
      def gethostname(self):
  
                self.hostname = self.connect.find_prompt()
  
                self.hostname = self.hostname.replace("#","")
  
                print self.hostname
  

  
      def cdpconfig(self):
  
                self.output = self.connect.send_command('show cdp nei')
  
                lines = self.output.splitlines()
  
                #print lines
  
                hostname = None
  
                config = []
  
                for line in lines:
  
                  words = line.split()
  
                  if len(words) == 1:
  
                        hostname = words.split('.')
  
                  elif hostname is None:
  
                        hostname = words.split('.')
  
                        local = ''.join(words)
  
                        remote = ''.join(words[-2:])
  
                        description = '_'.join((hostname,remote))
  
                        config.append('interface' + ' '+ local)
  
                        config.append('description' + ' ' + description)
  
                        hostname = None
  
                  else:
  
                         local = ''.join(words)
  
                         remote = ''.join(words[-2:])
  
                         description = '_'.join((hostname,remote))
  
                         config.append('interface' + ' '+ local)
  
                         config.append('description' + ' ' + description)
  
                         hostname = None
  
                self.config ='\n'.join(config)
  

  
      def configure(self):
  
                configure = self.connect.send_config_set(self.config)
  
                saveconfigure = self.connect.send_command('writememory')
  

  

  
      def backup(self,tftpip):
  
               date = datetime.datetime.now().strftime('%Y-%m-%d')
  
               bkhostname   = '_'.join((self.hostname,date))
  
               backupcmd    ='copy running-config tftp:'
  
               self.tftpip=tftpip
  
               bkconf= '\n'.join((backupcmd,self.tftpip,bkhostname))
  
               self.bkconf= self.connect.send_command(bkconf)
  

  
      def close(self):
  
                if self.connect is not None:
  
                     self.connect.disconnect()
  
                     self.connect = None
  
                     print '[+] Network devices complete all settings!'
  

  
if __name__ == '__main__':
  
      print "[+] This Program is beging done......."
  
      #username = raw_input('Username:')
  
      #password = getpass.getpass()
  
      for iplist in open("/opt/other/ip.txt"):
  
                try:
  
                   switch = CiscoNetwork('admin','Password.123')
  
                   switch.CiscoDevice(iplist)
  
                   switch.gethostname()
  
                   switch.cdpconfig()
  
                   switch.configure()
  
                   switch.backup('172.16.200.201')
  
                   switch.close()
  
                except (EOFError, NetMikoTimeoutException):
  
                   print ('Can not connect to Device!')
页: [1]
查看完整版本: Python与Cisco的事儿之四