– Telnet客户端 – Internet协议和支持(Python教程)(参考资料)
telnetlib
– Telnet客户端
源代码: Lib / telnetlib.py
telnetlib
模块提供Telnet
实现Telnet协议的类。有关协议的详细信息,请参阅 RFC 854 。此外,它还为协议字符(见下文)和thetelnet选项提供了符号常量。telnet选项的符号名称遵循arpa/telnet.h
中的定义,删除了前导TELOPT_
。对于传统上不包含在arpa/telnet.h
中的选项的符号名称,请参阅模块源本身.
telnet命令的符号常量为:IAC,DONT,DO,WONT,WILL,SE(子协商)结束),NOP(无操作),DM(数据标记),BRK(中断),IP(中断过程),AO(中止输出),AYT(你在那里),EC(EraseCharacter),EL(擦除线),GA(Go Ahead),SB(Subnegotiation Begin).
- class
telnetlib.
Telnet
(host=None, port=0 [, timeout] ) -
Telnet
表示与一个Telnet服务器。该实例最初默认不连接;open()
必须使用方法来建立连接。或者,主机名和可选的portnumber也可以传递给构造函数,在这种情况下,服务器的连接将在构造函数返回之前建立。可选timeout参数指定阻塞操作的超时秒数(如果未指定,将使用全局默认超时设置).不要重新打开已连接的实例.
这个类有很多
read_*()
方法。请注意,其中一些提升EOFError
读取连接结束时,因为其他原因可以返回空字符串。请参阅下面的个别说明.A
Telnet
object是一个上下文管理器,可以在with
语句中使用。当with
块结束时,调用close()
方法:>>> from telnetlib import Telnet>>> with Telnet("localhost", 23) as tn:... tn.interact()...
在版本3.6中更改:添加了上下文管理器支持
Telnet Objects
Telnet
实例有以下内容方法:
Telnet.
read_very_eager
( )-
读取I / O中所有可能没有阻塞的内容(急切).
Telnet.
read_lazy
()-
处理并返回队列中的数据(懒惰).
提升
EOFError
如果连接关闭且没有数据可用。如果没有熟食数据则返回b""
。除非在IAC序列中没有阻止,否则不要阻塞.
Telnet.
read_very_lazy
()-
返回熟食队列中的任何数据(非常懒惰).
如果连接关闭且没有可用数据,请提升
EOFError
。如果没有熟食数据则返回b""
。这种方法永远不会阻塞.
Telnet.
read_sb_data
()-
返回SB / SE对之间收集的数据(子选项开始/结束)。当使用
SE
命令调用时,回调应该访问这些数据。这个方法永远不会阻塞.
Telnet.
open
(host, port=0 [, timeout])-
连接到主机。可选的第二个参数是端口号,它默认为标准Telnet端口(23)。可选timeout参数指定阻塞操作的超时秒数(如果未指定,将使用全局默认超时设置).
不要尝试重新打开已连接的实例.
Telnet.
msg
(msg, *args)-
在调试级别为
>
时打印调试消息。如果存在额外的参数,则使用标准的字符串格式化操作符在消息中替换它们.
Telnet.
set_debuglevel
(debuglevel)-
设置调试级别。debuglevel的值越高,你获得的调试输出越多(在
sys.stdout
).
Telnet.
close
()-
关闭连接.
Telnet.
get_socket
()-
回收内部使用的插座物品.
Telnet.
fileno
()-
返回内部使用的套接字对象的文件描述符.
Telnet.
write
(buffer)-
在套接字上写一个字节串,加倍任何IAC字符。如果连接被阻止,则会阻塞。如果关闭连接可能会提升
OSError
在版本3.3中更改:此方法用于引发
socket.error
,现在这是一个别名OSError
.
Telnet.
interact
()-
交互功能,模拟一个非常愚蠢的Telnet客户端.
Telnet.
mt_interact
()-
interact()
.
Telnet.
expect
(list, timeout=None)的多线程版-
读取直到正则表达式列表中的一个匹配.
第一个参数是正则表达式列表,要么编译(正则表达式对象),要么未编译(字节串)。第二个参数是超时,以秒为单位;默认是blockindefinitely.
返回三个元组的元组:匹配的第一个regularrexpression列表中的索引;匹配对象返回;并且字节读取并且包括匹配.
如果找到文件结尾并且没有读取字节,则抬起
EOFError
。否则,当没有匹配时,返回(-1, None, data)
wheredata是到目前为止收到的字节(如果发生超时,可能是空字节).如果正则表达式以贪婪的匹配结束(例如
.*
)或者更多一个表达式可以匹配相同的输入,结果是非确定性的,可能取决于I / O时序.
Telnet.
set_option_negotiation_callback
(callback)-
每次在输入流上读取telnet选项时,callback(如果设置)都使用以下参数调用:callback(telnet socket,命令(DO / DONT / WILL / WONT),选项)。之后telnetlib没有做其他动作
举例说明
说明典型用法的简单例子:
import getpassimport 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"))