java - 使用 JSCH 从 Java 使用 "more"命令时删除特殊字符?

标签 java unix ssh jsch

我在 UNIX 服务器上有一个动态变化的日志文件。

我想构建一个应用程序,以便使用 SSH 在多个页面中使用 Swings 在 Java GUI 上查看该文件。

我正在使用 JSCH 库来执行该日志文件的“更多”命令。但在输出中,打印了一些特殊字符,例如“[24;1H[K[7m”]。如何删除这些特殊字符。

我正在使用以下代码

session.setConfig("StrictHostKeyChecking", "no");   
session.connect(30000);
Channel channel=session.openChannel("shell");
channel.setInputStream(System.in);
channel.setOutputStream(System.out);            
channel.connect();           
Thread.sleep(3000);  
PrintStream ps = new PrintStream(channel.getOutputStream(), true);
ps.println("more " + fileName);

输出是:

[?7h[?1l(B=[24;1H[K************ Start Display Current Environment ************
[24;1H[K[7mSystemOut.log (0%)[m[24;1H[24;1H[KID: soacore.FP6123  BuildVrsn: null  Desc: WebSphere Process Server 6.1.2.3
[24;1H[K[7mSystemOut.log (0%)[m

如您所见,打印了一些特殊字符。如何删除那些特殊字符?

最佳答案

我找到了答案。只需一行代码即可实现这一目的。

((ChannelShell) channel).setPtyType("dumb");

在 connect() 之前添加以上行会删除所有不可打印的字符。

关于java - 使用 JSCH 从 Java 使用 "more"命令时删除特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24931547/

相关文章:

java - 从 Eclipse 运行应用程序时未调用 repaint()?

java - 查找小写单词的最大和最小数量

java - 在 JSP 中获取多对一 hibernate

linux - 如何使用 Bash 删除行首的换行符和字符?

linux - 匹配不同文件中的 2 个字段

java - 运行测试时获取 "java.lang.IllegalArgumentException: Decode argument cannot be null"

unix - 仅列出 UNIX 中的目录

debugging - 如何调试 ssh 隧道

matlab - 在 Emacs matlab 模式下启动远程 Matlab 进程?

java - 通过 JSCh 将密码传递给 shell 脚本