telnetlib 是 Python 标准库中的一个模块,它提供了 Telnet 协议的客户端功能。使用 telnetlib 模块,我们可以在 Python 中编写脚本来自动化 Telnet 会话,执行命令以及收集输出。

本文将介绍 telnetlib 模块的基本使用以及一些示例。

基本用法

在使用 telnetlib 时,需要先创建一个 Telnet 对象,然后使用该对象进行 Telnet 会话。可以使用以下代码创建一个 Telnet 对象:

import telnetlib      tn = telnetlib.Telnet(host, port)

其中 host 是 Telnet 服务器的主机名或 IP 地址,port 是 Telnet 服务器的端口号。

创建 Telnet 对象后,可以使用 read_until() 方法等待服务器发送的数据。可以使用以下代码等待 Telnet 服务器发送的数据:

tn.read_until(b"login: ")

其中 b"login: " 是一个字节数组,用于指定需要等待的字符串。

可以使用 write() 方法向 Telnet 服务器发送数据。例如,可以使用以下代码向 Telnet 服务器发送用户名和密码:

tn.write(username.encode('ascii') + b"\n")   tn.read_until(b"Password: ")   tn.write(password.encode('ascii') + b"\n")

在登录到 Telnet 服务器后,可以使用 write() 方法执行命令并收集输出。例如,可以使用以下代码执行 ls 命令并收集输出:

tn.write(b"ls\n")   output = tn.read_all().decode('ascii')   print(output)

以上是 telnetlib 模块的基本用法,接下来我们将看一些示例。

示例

示例:Telnet 登录并执行命令

以下示例演示如何使用 telnetlib 模块登录到 Telnet 服务器并执行命令:

import telnetlib      # 配置 Telnet 服务器的 IP 地址和端口号   HOST = "localhost"   PORT = 23      # 配置 Telnet 登录信息   username = "admin"   password = "password"      # 创建 Telnet 对象   tn = telnetlib.Telnet(HOST, PORT)      # 等待服务器发送登录提示   tn.read_until(b"login: ")      # 发送用户名   tn.write(username.encode('ascii') + b"\n")      # 等待服务器发送密码提示   tn.read_until(b"Password: ")      # 发送密码   tn.write(password.encode('ascii') + b"\n")      # 执行命令并收集输出   tn.write(b"ls\n")   output = tn.read_all().decode('ascii')   print(output)      # 关闭 Telnet 连接   tn.close()

下面是Python telnetlib框架的更多例子:

1. 实现交互式命令行

telnetlib可以实现交互式的命令行操作。下面是一个简单的示例,演示了如何连接到远程设备,执行命令并获取输出:

import telnetlib      HOST = "192.168.0.1"   user = "admin"   password = "password"      tn = telnetlib.Telnet(HOST)      tn.read_until(b"login: ")   tn.write(user.encode('ascii') + b"\n")   tn.read_until(b"Password: ")   tn.write(password.encode('ascii') + b"\n")      tn.write(b"enable\n")   tn.read_until(b"Password: ")   tn.write(password.encode('ascii') + b"\n")      tn.write(b"show interfaces\n")   output = tn.read_all().decode('ascii')      print(output)

在这个例子中,我们首先连接到远程设备,然后输入用户名和密码以登录。接着,我们输入enable命令,再次输入密码以获取管理员权限。最后,我们执行show interfaces命令,并将输出打印出来。

2. 实现交互式配置

除了执行命令,我们也可以使用telnetlib实现交互式的配置。下面是一个简单的示例,演示了如何连接到远程设备,进入配置模式并配置接口:

import telnetlib      HOST = "192.168.0.1"   user = "admin"   password = "password"      tn = telnetlib.Telnet(HOST)      tn.read_until(b"login: ")   tn.write(user.encode('ascii') + b"\n")   tn.read_until(b"Password: ")   tn.write(password.encode('ascii') + b"\n")      tn.write(b"enable\n")   tn.read_until(b"Password: ")   tn.write(password.encode('ascii') + b"\n")      tn.write(b"configure terminal\n")   tn.write(b"interface ethernet 1/1\n")   tn.write(b"description Link to Switch A\n")   tn.write(b"no shutdown\n")   tn.write(b"exit\n")   tn.write(b"exit\n")      output = tn.read_all().decode('ascii')      print(output)

在这个例子中,我们首先连接到远程设备,然后输入用户名和密码以登录。接着,我们输入enable命令,再次输入密码以获取管理员权限。然后,我们输入configure terminal命令进入配置模式,并使用interface ethernet 1/1命令进入以太网接口1/1的配置界面。在这个界面中,我们使用description命令配置了接口的描述,使用no shutdown命令开启了接口,并使用exit命令退出了接口配置界面和配置模式。最后,我们将所有输出打印出来。

---------------------------END---------------------------

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

P叔带你学Python37-Telnet协议telnetlib模块相关推荐

  1. 黑猫带你学UFS协议第17篇:全网最全UFS RPMB LU详解(重放保护逻辑单元)

    1 前言 1.1 声明 本文依据UFS3.1 JEDEC协议及个人工作经验整理而成,如有错误请留言. 文章为个人辛苦整理,付费内容,已加入原创侵权保护,禁止私自转载. 文章所在专栏:<黑猫带你学 ...

  2. 黑猫带你学UFS协议第1篇:全网最全UFS协议中文详讲,这份学习框架图,你值得拥有!!!(持续更新中...)

    文/黑猫学长 1 作者想说 笔者本人从事于存储芯片行业多年,对eMMC/UFS/SD等芯片有深入研究,协议尤甚.而今看来,UFS协议在整个存储产品中(包括U盘.SPI.SD卡,NM卡.emmc.SSD ...

  3. 黑猫带你学UFS协议第16篇:UFS如何配置逻辑单元(LU Management)

    本文依据UFS3.1 JEDEC协议及个人工作经验整理而成,如有错误请留言. 文章为个人辛苦整理,付费内容,禁止私自转载. 文章所在专栏:<黑猫带你学:UFS协议详解> 1 特性 不同的L ...

  4. 黑猫带你学UFS协议第11篇:两万字详解UFS协议信息单元(UPIU)

    1 前言 本文依据UFS3.1 JEDEC协议.网络资料及个人工作经验整理而成,如有错误请留言. 文章为个人辛苦整理,付费内容,禁止私自转载. 本文结合UFS3.1 JEDEC协议手册查看效果更佳. ...

  5. 黑猫带你学eMMC协议第11篇:eMMC擦除详解(erase/trim/discard/sanitize/secure erase/secure trim...)

    文/黑猫学长 本文依据eMMC JEDEC5.1及个人工作经验整理而成,如有错误请留言. 文章为个人辛苦整理,付费内容,已加入原创维权,禁止私自转载. 文章所在专栏:<黑猫带你学:eMMC协议详 ...

  6. 黑猫带你学UFS协议第3篇:UFS简介

    本文依据UFS3.1 JEDEC协议及个人工作经验整理而成,如有错误请留言. 文章为个人辛苦整理,付费内容,已加入原创侵权保护,禁止私自转载. 文章所在专栏:<黑猫带你学:UFS协议详解> ...

  7. 黑猫带你学eMMC协议第8篇:eMMC供电情况详解(power)

    1 前言 1.1 声明 本文依据eMMC JEDEC5.1及个人工作经验整理而成,如有错误请留言. 文章为个人辛苦整理,付费内容,禁止私自转载. 文章所在专栏:<黑猫带你学:eMMC协议详解&g ...

  8. 黑猫带你学eMMC协议第7篇:eMMC各种寄存器详解(register)

    1 前言 1.1 声明 本文依据eMMC JEDEC5.1及个人工作经验整理而成,如有错误请留言. 文章为个人辛苦整理,付费内容,禁止私自转载. 文章所在专栏:<黑猫带你学:eMMC协议详解&g ...

  9. [元带你学: eMMC协议 7] eMMC 概述 与 eMMC总线协议

    依JEDEC eMMC 5.1及经验辛苦整理,付费内容,禁止转载. 所在专栏 <元带你学: eMMC协议> 前言 全文4500 字, 全文介绍eMMC 内部系统框架, Bus 总线宽度, ...

  10. 【逗老师带你学IT】HUAWEI华为防火墙自动化运维Python ssh管理网络设备

    本文,介绍一种.通过Django框架,搭建API服务器,并通过此API服务器管理华为防火墙.并以此衍生出,通过Django+Python+ssh的方式管理网络设备的方法. 关于Django环境的搭建, ...

最新文章

  1. 【c语言】求三个数的最小数
  2. C++学习路线(最全资源整合)
  3. 【Linux】一步一步学Linux——shopt命令(214)
  4. list1与list2求交集的方法总结!
  5. python如何操作oracle数据库_python操作oracle数据库
  6. oracle数据库、数据表的创建与管理 实验笔记二
  7. Java文件类– java.io.File
  8. 如何在 Linux 中运行.exe 程序
  9. 学Java不得不看的技术书
  10. 快速批量打印工程图,这个工具少不了
  11. 将图片url转为base64的方法
  12. java itext read a pdf file_java - 使用iText7读取PDF时遇到的问题(使用iText5) - 堆栈内存溢出...
  13. linux环境下questasim 10.7的安装步骤
  14. 【华为OD机试真题 Java】找出通过车辆最多颜色 (A卷2022Q4)
  15. 主动雷达和被动雷达的区别
  16. NumPy 数值计算基础
  17. phpnow测试PHP源码,phpnow php探针环境检测代码
  18. 看牛人如何学习JAVA-如何学习java
  19. 【编译原理】-- 第二章(三)(文法的化简改造、无用产生式、产生式的消除、文法的其他表示方法、例题)
  20. 毕设分享SSM 网上购物商城系统(含源码+论文)

热门文章

  1. 重庆设计行业利润虚高,如何合理进行税收筹划,减轻税负压力
  2. 推动行业健康化转型,TCL冰箱获AWE艾普兰金口碑奖
  3. 无线蓝牙耳机应该买哪一款?发烧友推荐这几款蓝牙耳机
  4. 博客项目(前台功能实现)
  5. Bug记录--关于浏览器打开后会自动跳转到hao123的解决方案
  6. 第8章第13节:制作企业宣传册的企业文化幻灯片 [PowerPoint精美幻灯片实战教程]
  7. excel合并单元格函数
  8. 自学前端第二天:HTML基础知识提前汇总
  9. Python报错:SyntaxError: invalid character ‘,‘ (U+FF0C)
  10. macbook docker搭建hadoop集群