Python與Cisco的事兒之四
阿新 • • 發佈:2018-02-03
exception split() raw_input python memory min () mark [] 以下代碼實現的流程: cdp -->獲取相應鏈接的信息-->自動寫進設備相對應的端口--->configure保存-->configure備份到TFTP服務器!
#!/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()[5:-2] #print lines hostname = None config = [] for line in lines: words = line.split() if len(words) == 1: hostname = words[0].split('.')[0] elif hostname is None: hostname = words[0].split('.')[0] local = ''.join(words[1:3]) remote = ''.join(words[-2:]) description = '_'.join((hostname,remote)) config.append('interface' + local) config.append('description' + description) hostname = None else: local = ''.join(words[0:2]) 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('write memory') 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!')
Python與Cisco的事兒之四