我正在使用
telnetlib3
通过 python 访问 Telnet 服务器。使用下面的代码,我正确地得到了结果,但输出被所有输入提示弄乱了。我只想得到命令 show all-outlets-status
的清晰结果,而不需要任何其他行。
可以吗?
#!/usr/bin/env python3
import asyncio
import telnetlib3
async def shell(reader, writer):
rules = [
('login as:', '.....'),
('password:', '......'),
('PE-08I-532236$ ', 'show all-outlets-status'),
('PE-08I-532236$ ', 'exit'),
(') >', 'logout'),
]
ruleiter = iter(rules)
expect, send = next(ruleiter)
while True:
outp = await reader.read(1024)
if not outp:
break
if expect in outp:
writer.write(send)
writer.write('\r\n')
try:
expect, send = next(ruleiter)
except StopIteration:
break
# display all server output
print(outp, flush=True)
# EOF
async def main():
reader, writer = await telnetlib3.open_connection('10.0.0.59', 23, shell=shell)
await writer.protocol.waiter_closed
if __name__ == '__main__':
asyncio.run(main())
我会推荐xtelnet
这是一个易于使用的 telnet 模块,可以通过该协议与远程系统顺利交互!它是“telnetlib”的一个非常简约的替代品。 xtelnet 是一个功能强大且用户友好的 Python 库,旨在轻松高效地管理 Telnet 会话。凭借其直观的界面和强大的功能,xtelnet 简化了与 Telnet 服务器交互的过程,提供了一系列用于无缝通信的功能。 xtelnet 为 Telnet 通信提供了全面的解决方案,为开发人员提供了有效管理 Telnet 会话并与远程系统交互所需的工具。无论您是经验丰富的开发人员还是 Telnet 协议的新手,xtelnet 都能帮助您高效、可靠地实现您的目标。
为什么要使用 xtelnet?
易于使用且稳定
简单的身份验证机制在身份验证和执行命令方面与几乎所有服务器兼容可用的命令行工具
线程安全:如果线程之间共享会话来执行命令,命令将被一条一条地执行
支持同时运行多个会话
可以同时连接并并行运行相同的命令: 单个或部分或所有连接的主机
允许关闭后重新连接 连接
允许转义 ANSI 字符
获取横幅
如果您想保持连接打开,可以使用“ping”功能
支持 SOCKS 4 / 5 代理
支持SSL
支持发送JSON数据