在Python中从Telnet会话进行Telnet连接
在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的绑定)?基本上,我觉得你想做的事情是:
- 在你的Python脚本中,使用telnetlib连接到服务器A(输入用户名和密码)。
- 在这个“连接”中,发送剩下的命令,比如“telnet serverB”,然后使用expect(或者其他方法)来检查你是否收到了预期的“User:”提示;如果收到了,就发送用户名、密码,然后再发送其他命令,如果没有收到,就处理错误。
这应该是完全可行的,而且在一些老旧的系统中,这种做法是相当常见的,因为它们不支持更简洁的API。
1
我刚刚用手头的硬件和telnetlib检查了一下,没发现什么问题。当你连接到第一个设备时,只需要用 telnet.write('cmd')
发送所有必要的命令就可以了。这个命令可以是 sudo su\n
、telnet 192.168.0.2\n
或者其他任何命令。telnetlib 只关注它自己的telnet连接,所有其他的连接都是由相应的控制器来处理的。