当前位置:   article > 正文

python之 telnetlib类中函数详解及telnet远程登录ONU

telnetlib

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()函数返回值:输入字符串地址
  • 1
  • 2
  • 3
  • 4

实例:

    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'))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/187394
推荐阅读
相关标签
  

闽ICP备14008679号