20.14. telnetlib — TelnetClient 端

源代码: Lib/telnetlib.py


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

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

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

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

在 2.6 版中进行了更改:添加了“超时”。

See also

  • RFC 854-Telnet 协议规范

  • Telnet 协议的定义。

20.14.1. Telnet 对象

Telnet个实例具有以下方法:

如果找不到匹配项,则返回任何可用的内容,可能是空字符串。如果连接已关闭并且没有可用的数据,请提高EOFError

如果连接已关闭并且没有可用的数据,则提高EOFError。如果没有可用的煮熟数据,则返回''。除非处于 IAC 序列之中,否则不要阻塞。

如果连接已关闭并且没有可用的数据,则提高EOFError。如果没有可用的煮熟数据,则返回''。除非处于 IAC 序列之中,否则不要阻塞。

如果连接已关闭且无可用数据,请提高EOFError。如果没有可用的煮熟数据,则返回''。除非处于 IAC 序列之中,否则不要阻塞。

如果连接已关闭且无可用数据,请提高EOFError。如果没有可用的煮熟数据,则返回''。此方法永远不会阻塞。

2.3 版的新Function。

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

在 2.6 版中进行了更改:添加了“超时”。

第一个参数是正则表达式的列表,这些正则表达式可以是已编译(regex objects)或未编译(字符串)。可选的第二个参数是超时,以秒为单位;默认为无限期阻止。

返回三项的 Tuples:第一个匹配的正则表达式列表中的索引;匹配对象返回;Literals 会一直读到并包含 match 内容。

如果找到文件末尾且未读取任何文本,请引发EOFError。否则,当没有任何匹配项时,返回(-1, None, text),其中* text *是到目前为止接收到的文本(如果发生超时,则可以是空字符串)。

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

20.14.2. Telnet 示例

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

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()
首页