Python与Cisco 的事儿之二
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python与Cisco 的事儿之二相关的知识,希望对你有一定的参考价值。
坚持连续Python大战CiscoNetwork。
#!/usr/bin/python from netmiko import ConnectHandler from netmiko.ssh_exception import NetMikoTimeoutException import time import sys import getpass import re import StringIO 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 interfaceInfo(self,cmd): result = self.connect.send_command(cmd) for interface in result.split('\n'): if 'up' in interface: #print interface lines=StringIO.StringIO(interface) data = lines.read() intername = ' '.join(re.findall('^Eth.+\/\d',data)) loopback = ' '.join(re.findall('Loopback[0-9]',data)) interIP = re.findall( '\.'.join(['\d{1,3}']*4),data) if intername: print intername ,':', ''.join(interIP) else: print loopback , ':', ''.join(interIP) def show(self,cmd): result = self.connect.send_command(cmd) lines = StringIO.StringIO(result) data = lines.read() uptime = re.findall('uptime.+',data) id = re.findall('\d{8}',data) soft = re.findall('L3_.+',data) print 'Device UPtime:', ''.join(uptime) print 'Device ID:', ''.join(id) print 'Soft Version:',''.join(soft) 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(username,password) switch.CiscoDevice(iplist) switch.gethostname() switch.interfaceInfo('show ip int brief') switch.show('show version') switch.close() except (EOFError, NetMikoTimeoutException): print ('Can not connect to Device')
以上是关于Python与Cisco 的事儿之二的主要内容,如果未能解决你的问题,请参考以下文章