Python与Cisco的事儿之三
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python与Cisco的事儿之三相关的知识,希望对你有一定的参考价值。
以下代码可以实现登录网络设备后通过show cdp nei 命令查看邻居设备,然后利用拼接的方式来增加描述,最后再写进相对应的网络设备的接口。
#!/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()[5:-2] hostnames = None config = [] for line in lines: words = line.split() if len(words) == 1: hostnames = words[0].split('.')[0] elif hostnames is None: hostnames = words[0].split('.')[0] local = ''.join(words[1:3]) remote = ''.join(words[-2:]) description = '_'.join((hostnames,remote)) config.append('interface' + ' ' + local) config.append('description' +' ' + description) hostnames = None else: local = ''.join(words[0:2]) 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('write memory') print configure 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')
以上是关于Python与Cisco的事儿之三的主要内容,如果未能解决你的问题,请参考以下文章