telnetlib
telnetlib — Telnet client
源代码:
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示例
一个说明典型用途的简单例子:
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()