您现在的位置是:首页 > 文章详情

[雪峰磁针石博客]python库介绍-telnetlib:Telnet客户端

日期:2018-12-03点击:366

简介

telnetlib模块提供的Telnet类实现了Telnet协议(参见rfc854)。它为协议字符和telnet选项提供符号常量,符号常量来源于arpa/telnet.h,去掉了前缀TELOPT_。

telnet命令有: IAC, DONT, DO, WONT, WILL, SE (Subnegotiation End), NOP (No Operation), DM (Data Mark), BRK (Break), IP (Interrupt process), AO (Abort output), AYT (Are You There), EC (Erase Character), EL (Erase Line), GA (Go Ahead), SB (Subnegotiation Begin)。

class telnetlib.Telnet(host=None, port=0[, timeout])

快速入门

 #!/usr/bin/env python # -*- coding: utf-8 -*- # Author Rongzhong Xu 2016-08-25 wechat: pythontesting """ Name: telnet_demo.py Tesed in python3.5 """ import telnetlib HOST = "172.17.100.18" user = "test" password = "123456" def command(con, flag, str_=""): data = con.read_until(flag.encode()) print(data.decode(errors='ignore')) con.write(str_.encode() + b"\n") return data tn = telnetlib.Telnet(HOST) command(tn, "login: ", user) if password: command(tn, "Password: ", password) command(tn, "$", "ls") command(tn, "$", " exit") command(tn, "$", "") tn.close() 

执行结果:

 $ python3 telnet_demo.py CentOS release 6.7 (Final) Kernel 2.6.32-573.18.1.el6.x86_64 on an x86_64 login: Password: Last login: Thu Aug 25 17:20:18 from 172.17.153.6 [test@public01 ~]$ ls [test@public01 ~]$ exit logout

参考资料

方法

  • Telnet.read_until(expected[, timeout])

读取直到遇到了给定的字符串expected或超时秒数。

当找不到匹配时,返回读取内容。连接关闭或者没有数据时触发EOFError异常。

  • Telnet.read_all()

读取所有数据直到EOF,阻塞直到连接关闭。

  • Telnet.read_some()

读取至少一个字节的数据,除非EOF。 如果没有数据则阻塞。

  • Telnet.read_very_eager()

非阻塞地读取。连接关闭或者没有数据时触发EOFError异常。返回b''如果没有数据,

  • Telnet.read_eager()

读取的已有数据。(快)

连接关闭或者没有数据时触发EOFError异常。返回b''如果没有数据,

  • Telnet.read_lazy()

读取的已有数据(懒)

连接关闭或者没有数据时触发EOFError异常。返回b''如果没有数据,

  • Telnet.read_very_lazy()

读取的已有数据(很懒)

连接关闭或者没有数据时触发EOFError异常。返回b''如果没有数据,

  • Telnet.read_sb_data()

返回的SB/SE pair (suboption begin/end)之间的数据。此方法永远不会阻塞。

  • Telnet.open(host[, port[, timeout]])

连接到主机。可选的第二个参数是默认为标准的 Telnet 端口 (23) 的端口号。可选的超时参数指定以秒计) 阻塞操作 (如连接尝试超时 (如果不指定,将使用全局默认超时设置)。

  • Telnet.msg(msg[, *args])

当调试级别为> 0 打印调试消息。

  • Telnet.set_debuglevel(debuglevel)

设置调试级别。debuglevel越高信息越多。

  • Telnet.close()

关闭该连接。

  • Telnet.get_socket()

返回套接字供内部使用。

  • Telnet.fileno()

返回套接字对象内部使用的文件描述符。

  • Telnet.write(buffer)

写入字符串到套接字,加倍 IAC 的任何字符。连接关闭是可能触发OSError异常。

  • Telnet.interact()

交由用户控制。

  • Telnet.mt_interact()

多线程的版本的interact()。

  • Telnet.expect(list[, timeout])

读取直到匹配正则表达式项列表中的一个。

list是一个正则表达式列表,包含编译(regex 对象)或未编译(字节字符串)。timeout以秒为单位, 默认值为无限期阻塞。

返回元组的三个项目: index为匹配正则表达式的位置;match 对象;此时读了的字节。

文件结尾或没有数据时触发EOFError异常,不匹配时返回(-1, None, data)。

如果正则表达式是贪婪模式或者如果多个表达式可以匹配相同的输入,结果是不确定的,可能取决于I/O定时。

  • Telnet.set_option_negotiation_callback(callback)

每次从输入流读取telnet选项时,调用callback(telnet socket, command (DO/DONT/WILL/WONT), option),后续步骤不会执行。

原文链接:https://yq.aliyun.com/articles/674913
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章