关于Telnet登录Suse Linux后,回显信息行以\000为结束符的问题

swordzq 2009-04-25 08:33:24
1. 用telent登录suse linux

2. 执行ls -l命令

3. 对上述过程用etheral进行抓包,我发现每一行信息的最后两个字节为 \r\000 (即为回车符和null字符)

可我希望是每一行的结束符为\r\n, 请问这个要怎么设置,谢谢!
...全文
352 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
puheavy123 2009-04-27
  • 打赏
  • 举报
回复
上面的答复我都看过了,本来stty应该能解决这类问题的,如果楼主做了以上操作还是不行的话,不妨考虑嵌入expect语言试试
swordzq 2009-04-26
  • 打赏
  • 举报
回复
谢谢各位的回复,尤其是morris88。

别人的代码没有办法看到。我还是看一下能否通过改变telnetd的配置来解决这个问题。
qwiterger 2009-04-26
  • 打赏
  • 举报
回复
帮顶
morris88 2009-04-25
  • 打赏
  • 举报
回复
至于应该是如何处理,建议 LZ 参看 rfc 相应的标准,如下为 telnet 相关:

     RFC-854   TELNET PROTOCOL SPECIFICATION
RFC-855 TELNET OPTION SPECIFICATIONS
RFC-856 TELNET BINARY TRANSMISSION
RFC-857 TELNET ECHO OPTION
RFC-858 TELNET SUPPRESS GO AHEAD OPTION
RFC-859 TELNET STATUS OPTION
RFC-860 TELNET TIMING MARK OPTION
RFC-861 TELNET EXTENDED OPTIONS - LIST OPTION
RFC-885 TELNET END OF RECORD OPTION
RFC-1073 Telnet Window Size Option
RFC-1079 Telnet Terminal Speed Option
RFC-1091 Telnet Terminal-Type Option
RFC-1096 Telnet X Display Location Option
RFC-1123 Requirements for Internet Hosts -- Application and Support
RFC-1184 Telnet Linemode Option
RFC-1372 Telnet Remote Flow Control Option
RFC-1416 Telnet Authentication Option
RFC-1411 Telnet Authentication: Kerberos Version 4
RFC-1412 Telnet Authentication: SPX
RFC-1571 Telnet Environment Option Interoperability Issues
RFC-1572 Telnet Environment Option
  • 打赏
  • 举报
回复
人家的代码应该是以\r\000作为结束标志,你看看找找代码段里判断的地方,修改一下,这样更直接。
swordzq 2009-04-25
  • 打赏
  • 举报
回复
我现在在别人写的一个程序基础上进行二次开发,该程序实现了telnet客户端和ssh客户端功能,

但是该程序好像遇到回显的信息中含有\r\000时就把回显信息截断了(此后的字符被丢到了),

但是我不希望是这种处理方式,我希望等到新的提示符号出现的时候才截断。

因此需要把Linux回显的每行结尾由\r\000 改为 \r\n,

但是我试了很多方法都没有成功,比如使用stty命令重新设置终端的一些属性(可能是没有设置对)

举例: 我发送 ls -l 命令, 我希望收到所有回显信息,而不是在total 1561后就被截断了:
test@linux:~> ls -l
total 1561
drwxr-xr-x 2 test users 48 2009-03-30 11:04 bin
drwx------ 2 test users 80 2009-03-30 11:04 Documents
-rw-r--r-- 1 test users 338789 2009-04-13 01:23 expect-5.43.0-34.i586.rpm
test@linux:~>
morris88 2009-04-25
  • 打赏
  • 举报
回复

[root@bache ~]# telnet
telnet> toggle crlf
Will send carriage returns as telnet <CR><LF>.
telnet>


貌似也可以吧...
morris88 2009-04-25
  • 打赏
  • 举报
回复
另外,telnetd 服务器端貌似可以设置:
toggle crlf
来启用“使用CR/LF代替CR/NUL”作为行结束字符...
morris88 2009-04-25
  • 打赏
  • 举报
回复
在客户端使用 securecrt 吧,它可以设置:

session options->Terminal->Advanced->Other->Translating incoming CR to CR/LF

貌似也可以吧...

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧