首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

telnetlib

源代码: Lib / telnetlib.py

telnetlib模块提供了一个Telnet实现Telnet协议的类。有关该协议的详细信息,请参阅RFC 854。另外,它为协议字符(见下面)和telnet选项提供了符号常量。远程登录选项的符号名称遵循其中的定义arpa/telnet.h,并TELOPT_删除了前导符。对于传统上未包含的选项的符号名称arpa/telnet.h,请参阅模块源本身。

telnet命令的符号常量为:IAC,DONT,DO,WONT,WILL,SE(子协商结束),NOP(无操作),DM(数据标记),BRK(中断),IP(中断过程),AO中止输出),AYT(你在那里),EC(擦除字符),EL(擦除线),GA(前进),SB(子协商开始)。

class telnetlib.Telnet([host[, port[, timeout]]])

Telnet代表到Telnet服务器的连接。该实例最初并未默认连接; 该open()方法必须用于建立连接。或者,可以将主机名和可选端口号传递给构造函数,在这种情况下,将在构造函数返回之前建立与服务器的连接。可选的timeout参数指定阻止诸如连接尝试(如果未指定,将使用全局默认超时设置)等操作的超时(以秒为单位)。

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

这个类有很多read_*()方法。请注意,EOFError当读取连接结束时会引发其中的一些问题,因为由于其他原因它们可能会返回空字符串。请参阅下面的个别说明。

在版本2.6中更改:添加了超时

1. Telnet对象

Telnet 实例具有以下方法:

Telnet.read_until(expected[, timeout])

直到阅读给定的字符串,预计,当遇到或直到超时秒过去了。

如果找不到匹配项,则返回可用的任何项,可能为空字符串。EOFError如果连接关闭并且没有熟化数据可用,则提升。

Telnet.read_all()

读取所有数据直到EOF; 阻塞直到连接关闭。

Telnet.read_some()

除非命中EOF,否则至少读取一个字节的已煮熟数据。''如果EOF被击中,则返回。如果没有数据立即可用,则阻止。

Telnet.read_very_eager()

阅读所有可以在I / O(热切)中不受阻塞的内容。

EOFError如果连接关闭并且没有可用的已烹饪数据,则升起 ''如果没有可用的数据,则返回。除非在IAC序列中,否则不要阻塞。

Telnet.read_eager()

阅读随时可用的数据。

EOFError如果连接关闭并且没有可用的已烹饪数据,则升起 ''如果没有可用的数据,则返回。除非在IAC序列中,否则不要阻塞。

Telnet.read_lazy()

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

EOFError如果连接关闭且没有可用数据,则提升。''如果没有可用的数据,则返回。除非在IAC序列中,否则不要阻塞。

Telnet.read_very_lazy()

返回已熟练队列中的任何数据(very lazy)。

EOFError如果连接关闭且没有可用数据,则提升。''如果没有可用的数据,则返回。这个方法永远不会阻塞

Telnet.read_sb_data()

返回SB / SE对之间收集的数据(子选项开始/结束)。回调应该在用SE命令调用时访问这些数据。这个方法永远不会阻塞

2.3版本的新功能。

Telnet.open(host[, port[, timeout]])

连接到主机。可选的第二个参数是端口号,默认为标准Telnet端口(23)。可选的timeout参数指定阻止诸如连接尝试(如果未指定,将使用全局默认超时设置)等操作的超时(以秒为单位)。

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

在版本2.6中更改:添加了超时

Telnet.msg(msg[, *args])

当调试级别为>0 时打印调试消息。如果存在额外的参数,则使用标准字符串格式操作符将其替换为消息。

Telnet.set_debuglevel(debuglevel)

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

Telnet.close()

关闭连接。

Telnet.get_socket()

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

Telnet.fileno()

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

Telnet.write(buffer)

将字符串写入套接字,使IAC字符加倍。这可以阻止连接被阻止。socket.error如果连接关闭,可能会引发。

Telnet.interact()

交互功能,模拟一个非常笨的Telnet客户端。

Telnet.mt_interact()

多线程版本interact()

Telnet.expect(list[, timeout])

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

第一个参数是正则表达式的列表,可以是compile(regex objects)也可以是uncompiled(字符串)。可选的第二个参数是以秒为单位的超时值; 默认是无限期阻止。

返回三个元素的元组:第一个正则表达式匹配的列表中的索引; 匹配对象返回; 并阅读文本直到包括比赛。

如果找到文件结尾并且没有文本被读取,请举起EOFError。否则,不匹配时,返回(-1, None, text)其中的文字是迄今收到的文字(可以是空字符串,如果超时发生)。

如果正则表达式以贪婪匹配(例如.*)结束,或者如果多个表达式可以匹配相同的输入,则结果是非确定性的,并且可能取决于I / O时序。

Telnet.set_option_negotiation_callback(callback)

每次在输入流上读取telnet选项时,使用以下参数调用此回调(如果已设置):callback(telnet套接字,命令(DO / DONT / WILL / WONT),选项)。之后telnetlib不会执行其他操作。

2. Telnet示例

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

代码语言:javascript
复制
import getpass
import sys
import telnetlib

HOST = "localhost"
user = raw_input("Enter your remote account: ")
password = getpass.getpass()

tn = telnetlib.Telnet(HOST)

tn.read_until("login: ")
tn.write(user + "\n")
if password:
    tn.read_until("Password: ")
    tn.write(password + "\n")

tn.write("ls\n")
tn.write("exit\n")

print tn.read_all()

扫码关注腾讯云开发者

领取腾讯云代金券