Telnet.read_until(expected, timeout=None)
读取,直到预期的给定字节字符串(b’ ')*或时间超时。
如果找不到匹配项,则返回可用的内容,**可能是空字节**。如果*连接已关闭且没有可用的cooked数据,则引发EOFError。
Telnet.read_all()
读取所有字节类型数据,直到EOF为止;阻止直到连接关闭。
Telnet.read_some()
至少读取一个字节的cooked数据,除非EOF被引发。如果引发EOF,则返回b’ '。如果没有可用数据则阻立即止。
Telnet.read_very_eager()
在I / O(eager)中可以读取无阻塞的所有内容。
如果连接关闭且没有可用的cooked数据,则引发EOFError。如果没有cooked数据则返回b’ '。除非在IAC序列中,否则不要阻止。
Telnet.read_eager()
读取真实有效的数据。
如果连接关闭且没有可用的coked据,则引发EOFError。如果没有cooked数据则返回b’ '。除非在IAC序列中,否则不要阻止。
Telnet.read_lazy()
处理和返回队列中已有的数据(lazy)。
如果连接已关闭且没有可用数据,则引发EOFError。如果没有cooked数据则返回b ’ '。除非在IAC序列中,否则不要阻止。
Telnet.read_very_lazy()
返回在cooked队列中的任何可用数据(very_lazy)。
如果连接已关闭且没有可用数据,则引发EOFError。如果没有cooked数据则返回b’ '。这种方法从不阻止。
Telnet.read_sb_data()
返回在SB / SE对之间收集的数据(子选项开始/结束)。当使用SE命令调用回调时,回调应该访问这些数据。这种方法从不阻止。
Telnet.open(host,port = 0 [,timeout])
连接到主机。可选的第二个参数是端口号,默认为标准Telnet端口(23)。可选的timeout参数指定阻塞操作(如连接尝试)的超时(以秒为单位)(如果未指定,将使用全局默认超时设置)。
不要尝试重新打开已连接的实例。
Telnet.msg(msg,* args)
当调试级别> 0时,打印调试消息。如果存在额外的参数,则使用标准字符串格式化运算符在消息中替换它们。
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)
直到读取正则表达式列表中的一个匹配。
第一个参数是正则表达式列表,可以是已编译的(正则表达式对象),也可以是未编译的(字节串)。可选的第二个参数是超时,以秒为单位;默认是无限期阻止。
返回三个元组的元组:匹配的第一个正则表达式列表中的索引;匹配对象返回;并且读取的字节直到包括匹配。
如果找到文件末尾并且没有读取任何字节,则引发EOFError。否则,当没有匹配时,返回(-1,None,data)数据是到目前为止接收的字节(如果发生超时,则可能是空字节)。
如果正则表达式以贪婪匹配(例如。*)结束,或者如果多个表达式可以匹配相同的输入,则结果是非确定性的,并且可能取决于I / O时序。
Telnet.set_option_negotiation_callback(回调)
每次在输入流上读取telnet选项时,将使用以下参数调用此回调(如果已设置):callback(telnet socket,命令(DO / DONT / WILL / WONT),选项)。之后telnetlib没有做任何其他操作。
示例
import telnetlib
import time
tn = telnetlib.Telnet(host='192.168.56.10',port=23,timeout=10) # 打开一个连接
tn.set_debuglevel(0) # 设置调试级别
tn.read_until(b'username:') # 读取指定的内容(读取和写入的都必须是字节类型)
tn.write(b'admin' + b'\n') # 写入
tn.read_until(b'password:')
tn.write(b'admin@123' + b'\n')
time.sleep(1)
print(tn.read_very_eager().decode('utf8')) # 读取输出的所有信息
shuru = input()
tn.write(bytes(shuru,encoding='utf8')+b'\n')
tn.close()