【发布时间】:2012-07-19 12:09:14
【问题描述】:
我正在寻找一种在使用telnetlib 时调整终端大小的方法。我已经用 Paramiko 的resize_pty 在 SSH 上实现了类似的效果,但我也需要支持 telnet 协议。这是否可能(telnet 甚至有控制流)?
请注意,telnetlib 不是必需的 - 如果有更好的库,我会很乐意使用它。
更新(更多背景知识):我正在构建一个基于 Web 的界面来连接网络设备。前端是使用 JS/AJAX 构建的,它基本上只是将击键发送到后端并从中接收屏幕内容。后端是用 Python 编写的,负责打开与设备的 SSH/telnet 会话,向设备发送击键并获取输出流,然后通过 VT100 虚拟终端 (pyte) 传递。然后将虚拟屏幕的内容发送回前端。当用户想要在其浏览器中调整终端屏幕大小时,就会出现问题。使用 SSH,我只需通过 Paramiko 发送resize_pty(),然后还调整 pyte 的虚拟终端屏幕大小。但是使用 telnet 我无法找到适当的调整大小功能来告诉设备它应该调整其终端的大小。这可能吗?
【问题讨论】:
-
你能详细说明你在做什么吗?您是否需要 telnetlib 为您处理带有服务器输出的某种伪终端,或者只是向它发送调整大小终端请求?
-
@MichałGórny:我已经更新了这个问题,我希望它现在更有意义...... :)
-
谢谢。我做了一些研究,当终端调整大小时,telnetd 调试
td: recv suboption NAWS 0 97 (97) 0 26 (26)。遗憾的是,我在telnetlib中没有看到任何特定选项来发送子选项,但我必须仔细研究一下协议。