从Python打开交互式telnet会话

从Python打开交互式telnet会话,python,telnet,Python,Telnet,我目前正在用Python编写一个小脚本,从数据库中读取一些可能的连接(节点名、telnet IP地址和telnet端口的三倍),并将其呈现给用户以选择连接到哪个节点 选择此选项后,我想打开一个交互式Telnet会话,用户可以使用该会话,就像使用Telnet命令手动连接一样。不知何故,我可能需要一个转义序列。它只需要在Linux操作系统上工作 我可以打电话给telnet: # Open shell call(["telnet", selected_node['ip'], selected_node

我目前正在用Python编写一个小脚本,从数据库中读取一些可能的连接(节点名、telnet IP地址和telnet端口的三倍),并将其呈现给用户以选择连接到哪个节点

选择此选项后,我想打开一个交互式Telnet会话,用户可以使用该会话,就像使用Telnet命令手动连接一样。不知何故,我可能需要一个转义序列。它只需要在Linux操作系统上工作

我可以打电话给telnet:

# Open shell
call(["telnet", selected_node['ip'], selected_node['port']])

这确实有效。不过,我想知道是否有更好的解决方案。

它是python,所有内容都包括在内。标准库中有一个
telnet

import getpass
import telnetlib

HOST = "localhost"
user = input("Enter your remote account: ")
password = getpass.getpass()

tn = telnetlib.Telnet(HOST)

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.write(b"exit\n")

print(tn.read_all().decode('ascii'))

是的,我明白。这与用户可以像自己打开telnet连接一样使用交互式telnet会话的要求有什么关系?听起来您的脚本需要读取用户输入,将其发送到telnet实例,阅读输出并在循环中向用户显示。然后我可能会坚持将telnet作为一个外部程序打开,这实际上非常有效。我只是想知道,如果不重新发明轮子,是否会有更好/更具蟒蛇风格的方式。谢谢你的回答。