在Python中从Telnet会话进行Telnet连接

2 投票
3 回答
1618 浏览
提问于 2025-04-18 00:01

在Python中,能不能先通过telnet连接到一个服务器,然后再从这个服务器连接到另一个服务器呢?

因为我有一个控制器,我需要用用户名和密码通过telnet登录进去,然后在控制器的命令行里,我需要以root身份登录才能运行Linux命令。我该怎么用Python来实现这个呢?

我使用telnetlib库登录到路由器控制器,但从路由器控制器我还需要再登录一次才能进入shell。这在Python中可以做到吗?

谢谢!

3 个回答

0

你可以使用 write() 来发出 sudo 命令。

tn.write("sudo\n")

你还可以使用 read_until() 来处理登录凭证。

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

你有没有考虑过使用expect(应该有Python的绑定)?基本上,我觉得你想做的事情是:

  1. 在你的Python脚本中,使用telnetlib连接到服务器A(输入用户名和密码)。
  2. 在这个“连接”中,发送剩下的命令,比如“telnet serverB”,然后使用expect(或者其他方法)来检查你是否收到了预期的“User:”提示;如果收到了,就发送用户名、密码,然后再发送其他命令,如果没有收到,就处理错误。

这应该是完全可行的,而且在一些老旧的系统中,这种做法是相当常见的,因为它们不支持更简洁的API。

1

我刚刚用手头的硬件和telnetlib检查了一下,没发现什么问题。当你连接到第一个设备时,只需要用 telnet.write('cmd') 发送所有必要的命令就可以了。这个命令可以是 sudo su\ntelnet 192.168.0.2\n 或者其他任何命令。telnetlib 只关注它自己的telnet连接,所有其他的连接都是由相应的控制器来处理的。

撰写回答