赞
踩
Telnet实例具有以下方法:
注意:在python3.5 版本以上Telnet类的子函数返回的都是 字节型字符串(b’ '),Python2.7 版本是直接返回字符型字符串;
telnet命令的符号常量为:IAC,DONT,DO,WONT,WILL,SE(子协商结束),NOP(无操作),DM(数据标记),BRK(中断),IP(中断过程),AO中止输出),AYT(你在那里),EC(擦除字符),EL(擦除线),GA(前进),SB(子协商开始);
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没有做任何其他操作。
getpass()函数用于从控制台输入一行字符串,关闭了回显(输入时不显示输入的字符串),适用于用密码的输入。
语法 char * getpass (const char * prompt);
参数prompt为提示字符串地址。
getpass()函数返回值:输入字符串地址
实例:
import getpass import telnetlib ipAddr = "192.168.1.1" user = input("Enter your remote account: ") password = getpass.getpass() tn = telnetlib.Telnet(ipAddr ) 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.close() print(tn.read_very_eager().decode('ascii'))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。