python 网络设备管理_「python」使用Telnet进行网络设备巡检

本次实验的目的:执行python脚本,实现自动远程Telnet连接到指定的路由器or交换机,执行指定的命令。之后将执行的日志保存在和python脚本相同的目录中,该日志的命名形式:设备名+日期+时间.txt。

首先,不得不承认Telnet已经非常落伍,明文传输导致该协议的安全性非常脆弱,用抓包软件可以一目了然看见所有执行了的命令,但今天只是简单的介绍学习,对新手还是会有所帮助的。

本次实验使用的是python3,教程适用对象:初学python的网络工程师。

路由器上的配置:

IP地址:192.168.1.200

username ljds password 0 ljds

enable secret ccie

line vty 0 4

login local

先手动Telnet路由器测试:

手动Telnet

手动Telnet没有问题,开始使用Python:

使用Telnet需要使用telnetlib模块。要将日志文件以设备名+日期时间的方式命名,所以我用了正则表达式re去匹配设备名,使用time获取时间。因此,总共调用3个模块。

所有代码如下:

############################

import telnetlib

import time

import re

LogTime = time.strftime('%Y-%m-%d_%H-%M-%S') #格式化时间,效果:2017-01-16_22-18-59

Host = '192.168.1.200'

CMD = 'show run' #执行的命令

UserName = 'ljds'

PassWord = 'ljds'

tn = telnetlib.Telnet(Host) #连接服务器

tn.write(UserName.encode())

tn.write(b'\n')

tn.write(PassWord.encode())

tn.write(b'\n')

tn.write('enable'.encode())

tn.write(b'\n')

tn.write('ccie'.encode())

tn.write(b'\n')

tn.write('terminal length 0'.encode())

tn.write(b'\n')

tn.write(CMD.encode())

tn.write(b'\n')

telreply = tn.expect([],timeout=1)[2].decode().strip() #将之前的信息放在telreply里。

DeviceName = re.search('.*(?=#show run)',telreply).group()#用正则表达式匹配设备名字

tn.close() #断开连接

log = open(DeviceName + '-' + LogTime + '.txt','w')

log.write(telreply)

log.close()

############################

这些代码写在Telnet_ljds.py中,现在执行这个Telnet_ljds.py文件,就会发现当前目录下已经多了一个.txt的日志文件,刚才show run的所有信息就都在里面了。

执行结果

巡检日志

今天是我第一次在今日头条上发表文章,写的比较草率。上面的内容比较简单,也很死板,只执行了一个show run,下次会使用函数的形式重新写Telnet进行设备巡检,并且可以执行多条命令。之后再写ssh协议远程连接网络设备(或者服务器)。

希望对初学python的同学(运维工程师)有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值