当连接到公共路由服务器bgp-view.tvnetwork.hu并发出命令show ip bgp时,我观察到netcat和telnet之间的不同行为。
使用Telnet输出(通常长达几万行)被截断,为了查看它,你必须按空格键或继续(像手册页)。 当我连接到netcat时,它只是开始转储所有的输出,并在前几百行后挂起。 即使我明确地声明,我想暂停使用命令terminal length 100的第100行后,netcat不会改变行为。
你有什么想法,为什么发生这种情况,以及如何解决? 我的操作系统是Ubuntu 10.4,路由服务器运行Quagga(版本0.99.5)。 另一种类似的行为也被观察到另一个quagga路由服务器()。 与其他types的路由器(思科或杜松),该问题不会出现。
谢谢。
PS。 我也把这个问题发布到stackoverflow但服务器故障似乎更相对。
编辑:
Wireshark帮助我发现问题是netcat拒绝协商窗口大小选项,尽pipe服务器请求“协商关于窗口大小”。 Netcat有一个-t参数来协商telnet选项,但是它的行为不接受任何选项(使用do not或will not作为默认值)。 所以现在的问题是如何让netcat协商窗口大小,并发送telnet发送的值80和高度25。
如果你连接telnet,并开始给予命令term len 0 ,它似乎不使用分页。
据猜测,使用netcat时没有做分页的原因是它可能没有为基本的terminal特性进行预期的TELNET协议协商。
编辑:似乎主要的问题是,它只是显示完整的路由表太长时间。 在离开Telnet会话后,使用term len 0和sh ip bgp运行,结果是:
Vty connection is timed out. Connection closed by foreign host.
这可能是周期性的数据发送到路由服务器(可能每45秒一个空格字符)可能足以不触发VTY超时,但我需要检查源代码确定。