繁体   English   中英

从Telnet会话内部进行Telnet(Python)

[英]Telnet from inside a telnet session (Python)

我试图从另一个远程设备远程登录到远程设备,使用telnetlib进行嵌套的telnet。 虽然我可以轻松地与第一台设备通信,但是我无法从第二台设备获取输出。 以下是我的代码,我可以正确执行此操作吗?

import telnetlib

HOST = "firstDevice"
user = "lab"
password = "lab"

tn = telnetlib.Telnet(HOST)

tn.read_until("Username: ")
tn.write(user + "\n")
if password:
    tn.read_until("Password: ")
    tn.write(password + "\n")

#Nested telnet
tn2 = telnetlib.Telnet("secondDevice") 
tn2.read_until("#")   
tn2.write("sh clock\n")

#Close tn2
tn2.write("exit\n")
print tn2.read_all()

#Close tn
tn.write("exit\n")
print tn.read_all()

编辑1

import telnetlib

HOST = "firstDevice"
user = "lab"
password = "lab"

tn = telnetlib.Telnet(HOST)

tn.read_until("Username: ")
tn.write(user + "\n")
if password:
    tn.read_until("Password: ")
    tn.write(password + "\n")

#Nested telnet
tn.write("telnet secondDevice\n") 
tn.write("sh clock\n")

#Close nested session
tn.write("exit\n")

#Close tn
tn.write("exit\n")
print tn.read_all()

您没有在代码中进行嵌套连接。 您只是从本地主机连接到两台不同的计算机,但是显然您实际上无法连接到第二台计算机。 要对第二个主机执行嵌套的Telnet,必须告诉第一个主机telnet到第二个主机:将tn2 = telnetlib.Telnet("secondDevice")替换为

tn.write("telnet secondDevice\n")

由于您具有嵌套连接,因此所有本地主机应该看到的是tn 您可以完全摆脱tn2对象。 与第二设备的所有交互将通过向第一设备发送字符串来完成,该字符串位于连接到第二设备的会话中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM