​telnetlib -- Telnet 客户端​

源代码: Lib/telnetlib.py

从 3.11 版起不建议使用,将在 3.13 版中移除: telnetlib 模块已被弃用(请参阅 PEP 594 了解详情及其替代品)。


telnetlib 模块提供一个实现Telnet协议的类 Telnet。关于此协议的细节请参见 RFC 854 。此外,它还为协议字符(见下文)和 telnet 选项提供了对应的符号常量。telnet选项对应的符号名遵循 arpa/telnet.h 中的定义,但删除了前缀 TELOPT_。对于不在 arpa/telnet.h 的选项的符号常量名,请参考本模块源码。

telnet命令的符号常量名有: IAC, DONT, DO, WONT, WILL, SE (Subnegotiation End), NOP (No Operation), DM (Data Mark), BRK (Break), IP (Interrupt process), AO (Abort output), AYT (Are You There), EC (Erase Character), EL (Erase Line), GA (Go Ahead), SB (Subnegotiation Begin).

可用性: 非 Emscripten,非 WASI。

此模块在 WebAssembly 平台 wasm32-emscripten 和 wasm32-wasi 上不适用或不可用。 请参阅 WebAssembly 平台 了解详情。

class telnetlib.Telnet(host=Noneport=0[, timeout])

Telnet 表示到 Telnet 服务器的连接. 实例初始化后默认不连接;必须使用 open() 方法来建立连接。或者, 可选参数 host 和 port 也可以传递给构造函数,在这种情况下,到服务器的连接将在构造函数返回前建立。可选参数 timeout 为阻塞操作(如连接尝试)指定一个以秒为单位的超时时间(如果没有指定,将使用全局默认设置) 。

不要重新打开一个已经连接的实例。

这个类有很多 read_*() 方法。 请注意,其中一些方法在读取结束时会触发 EOFError 异常,这是由于连接对象可能出于其它原因返回一个空字符串。 请参阅下面的个别描述。

Telnet 对象一个上下文管理器,可以在 with 语句中使用。当 with 块结束,close() 方法会被调用:

>>>

>>> from telnetlib import Telnet
>>> with Telnet('localhost', 23) as tn:
...     tn.interact()
...

在 3.6 版更改: 添加了上下文管理器的支持

参见

RFC 854 - Telnet 协议规范

Telnet 协议的定义。

Telnet 对象

Telnet 实例有以下几种方法:

Telnet.read_until(expectedtimeout=None)

读取直到遇到给定字节串 expected 或 timeout 秒已经过去。

当没有找到匹配时,返回可用的内容,也可能返回空字节。如果连接已关闭且没有可用的熟数据,将触发 EOFError。

Telnet.read_all()

读取数据,直到遇到 EOF;连接关闭前都会保持阻塞。

Telnet.read_some()

在达到 EOF 前,读取至少一个字节的熟数据。如果命中 EOF,返回 b''。如果没有立即可用的数据,则阻塞。

Telnet.read_very_eager()

在不阻塞 I/O 的情况下读取所有的内容(eager)。

如果连接已关闭并且没有可用的熟数据,将会触发 EOFError 。如果没有熟数据可用返回 b'' 。除非在一个 IAC 序列的中间,否则不要进行阻塞。

Telnet.read_eager()

读取现成的数据。

如果连接已关闭并且没有可用的熟数据,将会触发 EOFError 。如果没有熟数据可用返回 b'' 。除非在一个 IAC 序列的中间,否则不要进行阻塞。

Telnet.read_lazy()

处理并返回已经在队列中的数据(lazy)。

如果连接已关闭并且没有可用的数据,将会触发 EOFError 。如果没有熟数据可用则返回 b'' 。除非在一个 IAC 序列的中间,否则不要进行阻塞。

Telnet.read_very_lazy()

返回熟数据队列任何可用的数据(very lazy)。

如果连接已关闭并且没有可用的数据,将会触发 EOFError 。如果没有熟数据可用则返回 b'' 。该方法永远不会阻塞。

Telnet.read_sb_data()

返回在 SB/SE 对之间收集的数据(子选项 begin/end)。当使用 SE 命令调用回调函数时,该回调函数应该访问这些数据。该方法永远不会阻塞。

Telnet.open(hostport=0[, timeout])

连接主机。第二个可选参数是端口号,默认为标准 Telnet 端口(23)。可选参数 timeout 指定一个以秒为单位的超时时间用于像连接尝试这样的阻塞操作(如果没有指定,将使用全局默认超时设置)。

不要尝试重新打开一个已经连接的实例。

触发 auditing event telnetlib.Telnet.open ,参数为 selfhostport

Telnet.msg(msg*args)

当调试级别 > 0 时打印一条调试信息。如果存在额外参数,则它们会被替换在使用标准字符串格式化操作符的信息中。

Telnet.set_debuglevel(debuglevel)

设置调试级别。debuglevel 的值越高,得到的调试输出越多(在 sys.stdout )。

Telnet.close()

关闭连接对象。

Telnet.get_socket()

返回内部使用的套接字对象。

Telnet.fileno()

返回内部使用的套接字对象的文件描述符。

Telnet.write(buffer)

向套接字写入一个字节字符串,将所有 IAC 字符加倍。如果连接被阻塞,这可能也会阻塞。如果连接关闭可能触发 OSError。

触发 auditing event telnetlib.Telnet.write ,参数为 selfbuffer

在 3.3 版更改: 曾经该函数抛出 socket.error,现在这是 OSError 的别名。

Telnet.interact()

交互函数,模拟一个非常笨拙的 Telnet 客户端。

Telnet.mt_interact()

多线程版的 interact().

Telnet.expect(listtimeout=None)

一直读取,直到匹配列表中的某个正则表达式。

第一个参数是一个正则表达式列表,可以是已编译的 (正则表达式对象),也可以是未编译的 (字节串)。 第二个可选参数是超时,单位是秒;默认一直阻塞。

返回一个包含三个元素的元组:列表中的第一个匹配的正则表达式的索引;返回的匹配对象;包括匹配在内的读取过的字节。

如果找到了文件的结尾且没有字节被读取,触发 EOFError。否则,当没有匹配时,返回 (-1, None, data),其中 data 是到目前为止接受到的字节(如果发生超时,则可能是空字节)。

如果一个正则表达式以贪婪匹配结束(例如 .*),或者多个表达式可以匹配同一个输出,则结果是不确定的,可能取决于 I/O 计时。

Telnet.set_option_negotiation_callback(callback)

每次在输入流上读取 telnet 选项时,这个带有如下参数的 callback (如果设置了)会被调用: callback(telnet socket, command (DO/DONT/WILL/WONT), option)。telnetlib 之后不会再执行其它操作。

Telnet 示例

一个简单的说明性典型用法例子:

import getpass
import telnetlibHOST = "localhost"
user = input("Enter your remote account: ")
password = getpass.getpass()tn = telnetlib.Telnet(HOST)tn.read_until(b"login: ")
tn.write(user.encode('ascii') + b"\n")
if password:tn.read_until(b"Password: ")tn.write(password.encode('ascii') + b"\n")tn.write(b"ls\n")
tn.write(b"exit\n")print(tn.read_all().decode('ascii'))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/219194.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

架构设计系列之基础设施能力建设

周末聊两句: 今天将的基础设施能力建设部分,一般的架构书籍中都不存在的部分,这是我在实践过程中的经验和能力总结部分,希望和大家有一个很好的交流自从在 WeChat 中开了订阅号的两周半的时间,非常感谢大家的支持&…

Appium 自动化测试 —— Appium的环境搭建与设置流程!

1、Appium 环境搭建: 学习 appium 最大的难处之一在于环境的安装,安装流程比较繁琐,安装的工具和步骤也较多,以下是基于 Windows 系统下的 Android 手机端的安装流程。就像我们在用 Selenium 进行 web 自动化测试的时候一样&…

谷歌浏览器标签页显示内存使用率

Chrome 桌面浏览器的新更新现在可让您查看每个标签页占用了多少内存,这可以帮助您确定哪些标签页占用了多少内存,网站正在减慢您笔记本电脑的速度。 今年早些时候在 Google Chrome 中引入内存节省程序之后,Google 又发布了一项功能&#xff…

VBA即用型代码手册之工作薄的创建及保存

我给VBA下的定义:VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率,而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。 作为我的学员要利用我的积木编程思想,积木编程最重要的是积木如何搭建…

Mac安装软件显示文件已损坏处理方法

今天安装软件,突然遇到了文件已损坏,扔到废纸篓的情况,于是搜索了下解决办法,跟大家分享下,希望对你有所帮助 一、检查安全性设置 打开【设置】-【隐私与安全】,下拉找到安全性,将安全性更改为…

Vue组件封装知识总结

一、为什么要封装组件 首先,一个好问题,面试要考的!为什么要封装组件呢? 提高代码的复用性:通过封装,可以将一段代码或一部分功能抽象为一个独立的组件,并在不同的项目或场景中重复使用。这样可…

JSON Ajax

1. JSON概念 JSON,全称JavaScript Object Notation,即JavaScript对象表示法,是一种轻量级的数据交换格式。它基于JavaScript的子集,易于人阅读和编写,同时也易于机器解析和生成。 JSON的诞生,是为了解决电…

SE考研真题总结(二)

接上条,今天继续更新~ SE考研真题总结(一)-CSDN博客文章浏览阅读340次,点赞6次,收藏11次。本帖开始分享考研真题中设计【软件工程】的部分,预计会出5期左右,敬请期待~https://blog.csdn.net/js…

Apache SeaTunne简介

Apache SeaTunne简介 文章目录 1.Apache SeaTunne是什么?1.1[官网](https://seatunnel.apache.org/)1.2 项目地址 2.架构3.特性3.1 丰富且可扩展的连接器和插件机制3.2 支持分布式快照算法以确保数据一致性3.3 支持流、批数据处理,支持全量、增量和实时数…

Jmeter接口自动化测试 —— Jmeter变量的使用

​在使用jmeter进行接口测试时,我们难免会遇到需要从上下文中获取测试数据的情况,这个时候就需要引入变量了。 定义变量 添加->配置元件->用户自定义的变量 添加->配置元件->CSV 数据文件设置 变量的调用方式:${变量名} 变量的…

0x31 质数

0x31 质数 定义: 若一个正整数无法被除了1和它自身之外的任何自然数整除,则称该数为质数(或素数),否则则称该正整数为合数。 在整个自然数集合中,质数的数量不多,分布比较稀疏,对…

【教学类-06-19】20231217 (按“列”正序题)X-Y之间“加法题+题”(1页最多0-13。填满115空格)

作品展示:按列排序,从小到大正序(没有大量空格) 1.会有空格做分割线,上面部分是所有的小到大正序加法,下面的部分就是正序题目的不重复随机抽取题目(乱序题) 2、包含分割空格&…

【Java】智慧工地系统:让建筑行业管理更简单

概述 智慧工地管理平台面向房建、能源、交通各类工地的管理者,通过AI视频、物联感知技术对工地场景中的施工机械、建筑材料、施工规范、施工环境监管、完善施工现场项目管控。实现项目管控、特种设备管理、绿色施工、工地巡检等业务功能,沉淀工地监管数…

03_Web开发基础之综合应用

web开发基础之综合使用 学习目标和内容 1、能够描述jQuery的作用 2、能够使用jQuery的选择器获取元素 3、能够使用jQuery对HTML标签元素注册事件 4、能够使用jQuery对HTML元素的属性进行操作 5、能够描述Bootstrap的作用 6、能够使用Bootstrap创建简单网页 7、能够描述AJAX的作…

微信小程序置顶导航,替代原生导航栏

效果图&#xff1a; 思路&#xff1a;Navigation是小程序的顶部导航组件&#xff0c;当页面配置navigationStyle设置为custom的时候可以使用此组件替代原生导航栏&#xff0c;wx.getSystemInfoSync获取可使用窗口高度 wxml代码&#xff1a; <!-- 头部 --> <view cla…

MySQL执行流程_执行一条select语句,期间发生了什么

文章目录 执行一条select语句&#xff0c;期间发生了什么MySQL执行流程第一步&#xff1a;连接器第二步&#xff1a;查询缓存第三步&#xff1a;解析SQL第四步&#xff1a;执行SQL 执行一条select语句&#xff0c;期间发生了什么 MySQL执行流程 server层负责建立连接、分析和执…

windows下使用logstash同步跨网络集群的数据

我们在开发环境过程中&#xff0c;可能会遇到这样的场景。我们可以通过VPN访问远端的机房。有可能还要跨机房访问。这篇文章演示使用logstash&#xff0c;在windows上&#xff0c;去同步跨网络环境的不同机房之间的数据。 此方式受网络限制。适合同步小规模数据。 下载logstash…

HarmonyOS给应用添加消息通知

给您的应用添加通知 通知介绍 通知旨在让用户以合适的方式及时获得有用的新消息&#xff0c;帮助用户高效地处理任务。应用可以通过通知接口发送通知消息&#xff0c;用户可以通过通知栏查看通知内容&#xff0c;也可以点击通知来打开应用&#xff0c;通知主要有以下使用场景…

Leetcode的AC指南 —— 链表:面试题 02.07. 链表相交

摘要&#xff1a; Leetcode的AC指南 —— 链表&#xff1a;面试题 02.07. 链表相交。题目介绍&#xff1a;给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点&#xff0c;返回 null 。 文章目录 一、题目二、…

Windows安装Tesseract OCR与Python中使用pytesseract进行文字识别

文章目录 前言一、下载并安装Tesseract OCR二、配置环境变量三、Python中安装使用pytesseract总结 前言 Tesseract OCR是一个开源OCR&#xff08;Optical Character Recognition&#xff09;引擎&#xff0c;用于从图像中提取文本。Pytesseract是Tesseract OCR的Python封装&am…