shenzhang 发表于 2018-7-11 10:14:05

Python与Cisco的事儿之三

#!/usr/bin/python  

  
from netmiko import ConnectHandler
  
from netmiko.ssh_exception import NetMikoTimeoutException
  
import time
  
import sys
  
import getpass
  
import StringIO
  
import pprint
  

  

  
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("#","")
  

  

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

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

  
      def close(self):
  
                if self.connect is not None:
  
                     self.connect.disconnect()
  
                     self.connect = None
  

  
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.show()
  
                   switch.configure()
  
                   switch.close()
  
                except (EOFError, NetMikoTimeoutException):
  
                   print ('Can not connect to Device')
页: [1]
查看完整版本: Python与Cisco的事儿之三