怎么将Python项目telnet到网络设备(python,telnet,开发技术)

时间:2024-04-30 04:33:38 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

0.前言

Telnet协议属于TCP/IP协议族里的一种,对于我们这些网络攻城狮来说,再熟悉不过了,常用于远程登陆到网络设备进行操作,但是,它的缺陷太明显了,就是不安全,信息明文传送,极容易被攻击窃取信息,不推荐使用,但本节我还是先从它入手哈。

1. 测试环境及关键代码解释

1.1 简单测试环境

  1. 使用python3环境

  2. 使用内置telnetlib模块

  3. 简单的实验环境

说明:cmd.txt文件里面命令如下:terminallength0showclockshowipinterfacebrieflist.txt文件里面的IP如下:192.168.1.101192.168.1.102192.168.1.103

1.2 关键代码

importxx:导入模块classxx:定义类defxx:定义函数try-except:处理可能引发的异常tn.read_until(expected,timeout=None):等待预期字符串或等待超时tn.write(buffer):写入的字符串(意思发送给命令给设备)tn.expect(list,timeout=None):读显,list采用正则表达式(意思把执行过程显示出来)tn.read_very_eager():读显(意思把执行过程显示出来)tn.open(host,port=0[,timeout]):连接主机tn.close():关闭连接

Tips:终端与网络设备交付的信息是以byte类型,所以要把终端上的字符串encode编码转换为byte对象,网络设备回显的byte信息要decode解码。

2. 完整代码

'''欢迎关注微信公众号:'diandijishu'此平台是网路工程师个人日常技术、项目案例经验分享,为巩固及提升技术能力乃至共享所学所知技术也欢迎各位工程师一起分享、一起成长。'''#!/usr/bin/envpython#coding:utf-8'导入模块'fromtelnetlibimportTelnetimporttimeimportlogging'定义类'classTelnetClient():'初始化属性'def__init__(self):self.tn=Telnet()'定义login_host函数,用于登陆设备'deflogin_host(self,ip,username,password,enable=None,verbose=True):'连接设备,try-except结构'try:self.tn.open(ip,port=23)except:logging.warning('%s网络连接失败'%ip)returnFalse'输入用户名'self.tn.read_until(b'Username:',timeout=1)self.tn.write(b'\n')self.tn.write(username.encode()+b'\n')rely=self.tn.expect([],timeout=1)[2].decode().strip()#读显ifverbose:print(rely)'输入用户密码'self.tn.read_until(b'Password:',timeout=1)self.tn.write(password.encode()+b'\n')rely=self.tn.expect([],timeout=1)[2].decode().strip()ifverbose:print(rely)'进去特权模式'ifenableisnotNone:self.tn.write(b'enable\n')self.tn.write(enable.encode()+b'\n')ifverbose:rely=self.tn.expect([],timeout=1)[2].decode().strip()print(rely)time.sleep(1)rely=self.tn.read_very_eager().decode()if'Logininvalid'notinrely:logging.warning('%s登陆成功'%ip)returnTrueelse:logging.warning('%s登陆失败,用户名或密码错误'%ip)returnFalse'定义do_cmd函数,用于执行命令'defdo_cmd(self,cmds):'读取文件,for语句循环执行命令'withopen(cmds)ascmd_obj:forcmdincmd_obj:self.tn.write(cmd.encode().strip()+b'\n')time.sleep(2)rely=self.tn.read_very_eager().decode()logging.warning('命令执行结果:\n%s'%rely)'定义logout_host函数,关闭程序'deflogout_host(self):self.tn.close()if__name__=='__main__':username='cisco'#用户名password='cisco'#密码enable='cisco'#特权密码lists='list.txt'#存放IP地址文件,相对路径cmds='cmd.txt'#存放执行命令文件,相对路径telnet_client=TelnetClient()'读取文件,for语句循环登陆IP'withopen(lists,'rt')aslist_obj:foripinlist_obj:'如果登录结果为True,则执行命令,然后退出'iftelnet_client.login_host(ip.strip(),username,password,enable):telnet_client.do_cmd(cmds)telnet_client.logout_host()time.sleep(2)

3. 运行效果

怎么将Python项目telnet到网络设备

备注:这个运行的效果我只存放了192.168.1.101这个IP,精简一下,为了效果。

4. 报错效果

4.1 远程连接不上

4.2 用户名和密码错误

怎么将Python项目telnet到网络设备

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:怎么将Python项目telnet到网络设备的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:+与+=运算符怎么在Python中使用下一篇:

7 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18