以下代码实现的流程: 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!')