Python-交换机自动化巡检脚本笔记

python-交换机巡检自动化

​ 因为了解到python可以实现自动化的巡检功能,所以开始学习了《Python编程 从入门到实践》。通过一段时间的学习,将这本书的前11章看完,并开始搜索交换机巡检的相关模板,发现别人写的代码完全看不懂,很多模块,根本看不懂模块。经过一段时间的研究,要巡检,得学会以下几个模块:time、os、Netmiko、xlwt、re。
关于交换机的交互模块,有些大神用的是pexpect模块,使用 pexpect.spawn.sendline() 来发送交换机的命令和 pexpect.swapn.expect() 来验证输出是否符合要求。而我这次所使用的就是 Netmiko
我从开始学习到能ctrl+v出自己想要的脚本的过程如下:

《Python编程 从入门到实践》——百度大神的脚本——了解大神脚本中模块的功能——根据需求自己写脚本

接下来我们开始了解编写脚本,所需要了解的模块吧

第一章、各模块介绍

1、time模块——生成时间相关

import time
>>> res = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
>>> print(res)
2021-04-15 18:53:20

>>> res = time.strftime("%Y%m%d",time.localtime())
>>> print(res)
20210415

2、os模块的使用——创建目录

因为open模块只能创建文件,目录需要os模块来创建

import os
if not os.path.isdir("machine_learning"): 	#判定如何没有这个目录,就创建
    os.makedirs("machine_learning")			#创建

3、Netmiko-SSH巡检

通过ssh,巡检h3c的交换机。关键模块是ConnectHandler。

#!/usr/bin/python3
#H3c交换机
from netmiko import ConnectHandler

'''定义交换机,包括类型,密码,ip,主机名'''
ip_list = [
    ['交换机的sysname','交换机的管理ip'],
]

#这里定义了ssh要用到的参数
SW = {
   
    'device_type':'hp_comware',     #设备类型是netmiko预定义好的,现在用hp_comware是h3c的
    'username':'admin',				
    'ip':'',
    'password':"xxxxxx"
}
'''定义结束'''

'''交换机交互'''
for ip_item in ip_list:
    SW['ip'] = ip_item[1]
    connect = ConnectHandler(**SW)
    print(log_time + 'Successfully connected to ' + ip_item[0])
    output = connect.send_command('system view')
    iproute = connect.send_command("display ip routing-table")
   	print(output) 				#验证	
    print(iproute) 				#验证
'''交换结束'''

3.2、Netmiko-telnet巡检

telnet与ssh的区别应该就在于,device_type中尾部添加_telnet,用的是Netmiko,而ssh用的是ConnectHandler。

我们的telnet分为h3c和cisco。

H3C
from netmiko import Netmiko

'''定义交换机,包括类型,密码,ip,主机名'''
ip_list = [
    ['交换机的sysname','交换机的ip地址'],   #定义设备的用户名和管理地址
]
SW = {
   
    'device_type':'hp_comware_telnet',					#设备类型是netmiko预定义好的
    'username':'admin',
    'ip':'',
    'password':"xxxxxx",	
}
'''完成定义'''

'''与交换机交互'''
for ip_item in ip_list:
    SW['ip'] = ip_item[1]
    connect = Netmiko(**SW)
    print(log_time + 'Successfully connected to ' + ip_item[0])
    config = connect.send_command('dis cur')
    fan = connect.send_command('dis fan')
    print(config) 	#验证一下值是不是想要的
    print(fan) 		#验证一下值是不是想要的
cisco

主要的不同是,cisco的telnet是需要enable的。

from netmiko import Netmiko

'''定义交换机,包括类型,密码,ip,主机名'''
ip_list = [
    ['交换机的hostname','交换机的ip'],   #定义设备的用户名和管理地址
]
SW = {
   
    'device_type':'cisco_iso_telnet',					#设备类型是netmiko预定义好的
    'username':'admin',
    'ip':'',
    'password':"xxxxxx",								#telnet的密码
    'secret':'xxxxx',									#enable的密码
}
'''完成定义'''

'''与交换机交互'''
for ip_item in ip_list:
    SW['ip'] = ip_item[1]
    connect = Netmiko(**SW)
    connect.enable()									#注意这个地方!cisco是这样enable的
    print(log_time + 'Successfully connected to ' + ip_item[0])
    config = connect.send_command('shun run')
    cpu = connect.send_command('sh process cpu')
    print(config) 	#验证一下值是不是想要的
    print(fan) 		#验证一下值是不是想要的

4、xlwt模块-创建excel

import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('巡检报告第一次') #创建worksheet
worksheet.write(0,0,label = '设备名称')			#对A1添加内容
worksheet.write(0,1,label = '属性')				#对B1添加内容
worksheet.write(0,2,'值')						#对C2添加内容
workbook.save('巡检报告生成.xls')					#保存到excel,如果没有会创建。

在这里插入图片描述

5、re模块——正则表达式,截取想要的字段。

截取a-b之间的字符串:不包括ab

#注意有两种形式。一个匹配到第一个b,一个是匹配到最后一个b。
import re
number = "a123b456b" 

print(re.findall(r"a(.+?)b", number)) #注意!匹配到第一个b。
#输出['123']

print(re.findall(r"a(.&
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值