网站首页 > 技术文章 正文
telnetlib 模块提供一个实现Telnet协议的类 Telnet。
Telnet 表示到 Telnet 服务器的连接. 实例初始化后默认不连接;必须使用 open() 方法来建立连接。或者, 可选参数 host 和 port 也可以传递给构造函数,在这种情况下,服务器的连接将在构造函数返回前建立。可选参数 timeout 为阻塞操作(如连接尝试)指定一个以秒为单位的超时时间(如果没有指定,将使用全局默认设置) 。
整理了一个实例,代码如下所示:
import telnetlib
import time
import logging
if __name__ == '__main__':
host_ip = '192.168.198.23'
command = 'dis version'
username = input("Enter your remote account: ")
password = input("Enter your Password: ")
tn = telnetlib.Telnet()
tn.open(host_ip, port=23)
tn.read_until(b'login: ', timeout=10)
tn.write(username.encode('ascii') + b'\n')
tn.read_until(b'Password: ', timeout=10)
tn.write(password.encode('ascii') + b'\n')
time.sleep(2) # 延时两秒再收取返回结果,给服务端一定的响应时间
str_command = tn.read_very_eager().decode('ascii')
if 'Login incorrect' not in str_command:
logging.warning('%s登录成功'%host_ip)
else:
logging.warning('%s登录失败,用户名或密码错误'%host_ip)
tn.write(command.encode('ascii') + b'\n')
time.sleep(2)
str_command = tn.read_very_eager().decode('ascii') #得到命令结果
logging.warning('命令执行结果:\n%s' % str_command )
执行后的结果如下图所示:
备注1:
Telnet 对象
Telnet 实例有以下几种常用方法:
Telnet.read_until(expected, timeout=None)
读取直到遇到给定字节串 expected 或 timeout 秒已经过去。
当没有找到匹配时,返回可用的内容,也可能返回空字节。如果连接已关闭且没有可用的数据,将触发 EOFError。
Telnet.read_all()
读取数据,直到遇到 EOF;连接关闭前都会保持阻塞。
Telnet.read_some()
在达到 EOF 前,读取至少一个字节的数据。如果命中 EOF,返回 b''。如果没有可用的数据,则阻塞。
Telnet.read_very_eager()
在不阻塞 I/O 的情况下读取所有的内容(eager)。
如果连接已关闭并且没有可用的数据,将会触发 EOFError 。如果没有熟数据可用返回 b'' 。除非在一个 IAC 序列的中间,否则不要进行阻塞。
Telnet.read_eager()
读取现成的数据。
如果连接已关闭并且没有可用的数悉数据,将会触发 EOFError 。如果没有熟数据可用返回 b'' 。除非在一个 IAC 序列的中间,否则不要进行阻塞。
Telnet.open(host, port=0[, timeout])
连接主机。第二个可选参数是端口号,默认为标准 Telnet 端口(23)。可选参数 timeout 指定一个以秒为单位的超时时间用于像连接尝试这样的阻塞操作(如果没有指定,将使用全局默认超时设置)。
不要尝试重新打开一个已经连接的实例。
触发 auditing event telnetlib.Telnet.open ,参数为 self,host,port。
Telnet.close()
关闭连接对象。
Telnet.write(buffer)
向套接字写入一个字节字符串,将所有 IAC 字符加倍。如果连接被阻塞,这可能也会阻塞。如果连接关闭可能会触发 OSError。
触发 auditing event telnetlib.Telnet.write ,参数为 self,buffer。
备注2:在windows下面输入telnet不是内部或外部命令的解决方案
解决方案:
现在就可以用telnet功能了
猜你喜欢
- 2025-05-25 Python从放弃到入门:公众号历史文章爬取为例谈快速学习技能
- 2025-05-25 你要偷偷的学Python,然后惊呆所有人(第十一天)
- 2025-05-25 玛森:Python爬虫书籍推荐
- 2025-05-25 Python-web开发必备的9个知识点
- 2025-05-25 通过https协议发送skype信息给朋友python
- 2025-05-25 python使用技巧之环境搭建(办公自动化方向)
- 2025-05-25 接口测试实战:Jmeter与Python结合测试异步接口场景
- 2025-05-25 阿六带你用python appium搭建app自动化测试环境
- 2025-05-25 Python应该怎么学?
- 2025-05-25 揭秘Instagram登录逆向,以及完整的python代码实现
- 05-25Python 3.14 t-string 要来了,它与 f-string 有何不同?
- 05-25Python基础元素语法总结
- 05-25Python中的变量是什么东西?
- 05-25新手常见的python报错及解决方案
- 05-2511-Python变量
- 05-2510个每个人都是需要知道Python问题
- 05-25Python编程:轻松掌握函数定义、类型及其参数传递方式
- 05-25Python基础语法
- 257℃Python短文,Python中的嵌套条件语句(六)
- 257℃python笔记:for循环嵌套。end=""的作用,图形打印
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 90℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 81℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)