python:telnetlib -- Telnet 客户端

  • 简介
  • Telnet 对象
  • Telnet 示例

简介

elnetlib 模块提供一个实现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).

class telnetlib.Telnet(host=None, port=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 版更改: 添加了上下文管理器的支持

Telnet 对象

Telnet 实例有以下几种方法:

Telnet.read_until(expected, timeout=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(host, port=0[, timeout])
连接主机。第二个可选参数是端口号,默认为标准 Telnet 端口(23)。可选参数 timeout 指定一个以秒为单位的超时时间用于像连接尝试这样的阻塞操作(如果没有指定,将使用全局默认超时设置)。

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

触发 auditing event telnetlib.Telnet.open ,参数为 self,host,port。

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 ,参数为 self,buffer。

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

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

Telnet.mt_interact()
多线程版的 interact().

Telnet.expect(list, timeout=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'))

python:telnetlib -- Telnet 客户端相关推荐

  1. telnet 超时_python3从零学习-5.10.10、telnetlib—Telnet 客户端

    源代码: Lib/telnetlib.py telnetlib模块提供了实现Telnet协议的Telnet类.有关协议的详细信息,请参阅RFC 854.此外,它还为协议字符(参见下面)和telnet选 ...

  2. python telnetlib详解 执行循环命令_Python3+telnetlib实现telnet客户端

    一.程序要点说明 python实现telnet客户端的六个关键问题及其答案是: 使用什么库实现telnet客户端----telnetlib 怎么连接主机----两种方法,一种是在实例化时传入ip地址连 ...

  3. python3 telnetlib实现telnet客户端

    一.程序要点说明 python实现telnet客户端的六个关键问题及其答案是: 使用什么库实现telnet客户端----telnetlib 怎么连接主机----两种方法,一种是在实例化时传入ip地址连 ...

  4. python telnetlib执行命令_使用python Telnet远程登录执行程序的方法

    如下所示: # -*-coding:utf-8 -*- def do_telnet(Host, username, password, finish, commands): import telnet ...

  5. 简单介绍python连接telnet和ssh的两种方式

    本文主要介绍了python连接telnet和ssh的两种方式,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 Telnet 连接方式 #!/usr/bin/env p ...

  6. python telnet模块 more_[宜配屋]听图阁 - python 处理telnet返回的More,以及get想要的那个参数方法...

    问题: 需要循环获取网元返回的某个参数,并计算出平均值. 解决方案: 通过expect解决返回More的问题. 通过具体的参数位置,精确获取到参数. 讨论: 参数位置固定,不好复用. #! usr/b ...

  7. python telnetlib 协商_Python telnetlib:令人惊讶的问题

    我正在使用Python模块telnetlib创建一个telnet会话(带有一个chess服务器),我遇到了一个问题,我真的无法解决.以下代码工作正常:>>> f = login(&q ...

  8. python expect模块_Python基础教程:用Python怎么telnet到网络设备

    Python基础教程:用Python怎么telnet到网络设备 0.前言 Telnet协议属于TCP/IP协议族里的一种,对于我们这些网络攻城狮来说,再熟悉不过了,常用于远程登陆到网络设备进行操作,但 ...

  9. python telnetlib怎么下_Python telnetlib模块使用

    telnetlib模块使用 1.telnet 登录设备 2.将输出的信息写到list里面 3.读取想要的值或接口属性 下面是读取接口的PVID Python Code #!/usr/bin/env p ...

  10. Python结合telnet命令实现自动化测试dubbo接口

    欢迎关注[无量测试之道]公众号,回复[领取资源], Python编程学习资源干货. Python+Appium框架APP的UI自动化. Python+Selenium框架Web的UI自动化. Pyth ...

最新文章

  1. 首次用Intellij IDEA打开别人的项目,如何配置Tomcat服务器?
  2. js寻找两个数组的差集_js求两个数组的交集|并集|差集|去重
  3. 中科大计算机是一流学科吗,安徽2017双一流学科排行榜:中国科技大学第一
  4. vue 父组件与子组件之间的传值(普通传值)
  5. Django的MVT模式
  6. lpc3250 TFT-4238液晶支持
  7. exchange邮箱服务器端追踪某用户发送的邮件(发送状态、时间、主题等等信息)
  8. NFS==network file system
  9. 代码上传到github上
  10. C语言学生成绩管理系统
  11. 三维扫描仪行业调研报告 - 市场现状分析与发展前景预测
  12. 怎么快速修改图片的像素?
  13. 艺龙深耕酒店VS携程 布局旅游全产业
  14. MCE公司:新型STAT3抑制剂
  15. Right-BICEP要求设计四则运算2
  16. 在IDEA里gradle配置和使用
  17. 跨专业考研计算机难,盘点哪些专业跨专业考研难度大
  18. ntp服务restrict_NTP服务搭建详解一条龙
  19. 增大 MAT 堆内存
  20. vue学习(1)vue3/2下的 父子/爷孙组件间方法调用

热门文章

  1. 解构助贷:信贷机构和资金方的后台系统设计
  2. |推荐| 学习日志 + 遗忘曲线学习方法
  3. 拖延症晚期?你需要飞项待办事项清单来拯救你!
  4. 微信公众号图片点不开HTML,我写了一个iframe,里面嵌入了一个微信公众平台文章的URL,但是文章内的图片显示不出来。...
  5. 【软件架构】软件架构权衡系列 - 第 1 部分
  6. c语言中未定义的作用,C语言中未定义行为的iiii
  7. Linux内核i2c-tools命令
  8. 百度地图室内Poi检索
  9. docker全流程使用指南
  10. SpringBoot:@Schedule定时任务