TelnetClient输出 - ANSI禁用

时间:2016-05-20 08:52:25

标签: java terminal telnet ansi

我在stackoverflow.com上看到了类似的问题和答案

不幸的是,这对我不起作用。我有与前面这样的问题中给出的例子相同的代码,但是" dumb"终端类型(TelnetClient telnet =新的TelnetClient(" dumb")是他解决的问题)没有过滤ANSI字符所以我得到了这个:

上次登录:5月20日星期五10:09:21来自172.20.22.244

[01; 33mteltest @ vivadev [00m:[01; 34m~ [00m $ ls ls测试[01; 33mteltest @ vivadev [00m:[01; 34m~ [00m $ cd测试cd测试[01; 33mteltest @ vivadev] [00m:[01; 34m~ /测试[00m $ ls

我需要一个可读的文件。有没有其他已知的解决方案,如编码outputStream,什么?

谢谢。

1 个答案:

答案 0 :(得分:1)

传统应用会注意TERM,因此dumb使用颜色)会做你想要的。但是,有许多硬编码应用程序(无需评论)。

如果将程序输出重定向到文件,其中一些会抑制颜色,例如

foo >bar
但许多人(可能是大多数行为不端的计划)都忽略了这一点。要解决这些问题,您必须过滤结果,通过sed脚本或类似程序,或通过(例如)通过重定向或使用{{捕获命令的输出1}}然后后处理结果。例如,您可以使用类似

的脚本执行此操作
script

说明了这种方法。示例中的大多数#!/bin/sh myscript=$(mktemp) trap "sed -f $myscript typescript; rm -f $myscript typescript" EXIT INT QUIT HUP cat >$myscript <<"EOF" s/^[[[][<=>?]\{0,1\}[;0-9]*[@-~]//g xample: s/^[[]][^^[]*^[//g s/^[[]][^^[]*^[\\//g :loop s/[^^[]^[\(.\)/\1/g t loop s/ *$//g s/^.* //g s/^[[^[]//g /\1/g EOF script -c "$*" >/dev/null 对都是文字ASCII转义字符,您将无法选择/粘贴它们。原始sed脚本位于:script2log

脚本的要点是它正常运行命令,然后回显过滤结果。