【问题标题】:Remove of unwanted characters when I am using JSch to run command [duplicate]当我使用 JSch 运行命令时删除不需要的字符[重复]
【发布时间】:2017-05-31 06:08:22
【问题描述】:
jsch = new JSch();
session = jsch.getSession(userName, ip, 22);
session.setPassword(passWord);

session.connect();
channel = session.openChannel("shell");
expect = new Expect(channel.getInputStream(), channel.getOutputStream());
((ChannelShell) channel).setPtyType("dumb");
channel.connect();
System.out.println("After channel and expect");
if (expect.expect("#") > -1) {
    output = "Connected";
} else {
    output = "Unexpected Prompt";
    System.out.println("Unexpected Prompt");
}
expect.send("top" + "\n");
Thread.sleep(3000);
System.out.println("inside top");
OutputStream out = channel.getOutputStream();
out.write(3); // send CTRL-C
out.flush();
System.out.println("exit1");
if (expect.expect("$") > -1) {
    System.out.println("finding $");
    contt = (expect.before);
    if (contt != null && contt != "") {
       output=StringUtils.replace(contt,"\"","");
        System.out.println("afterline"+output);
    } else {
        contt="Error in Top Check";
        System.out.println("Error in Top check");
    }
} else {
    System.out.println("oit");
}

当我运行这段代码时,我得到了输出

[H[J[mtop - 05:54:39 up 53 days, 15:21, 22 users,  load average: 0.44, 0.80, 0.76[m[K
Tasks:[m[m 443 [mtotal,[m[m   1 [mrunning,[m[m 442 [msleeping,[m[m   0 [mstopped,[m[m   0 [mzombie[m[K
Cpu(s):[m[m  2.8%[mus,[m[m  0.8%[msy,[m[m  0.1%[mni,[m[m 95.9%[mid,[m[m  0.3%[mwa,[m

喜欢这些。我得到了不需要的字符。如何删除它们?

【问题讨论】:

  • 这是由于 jsch 使用的 tty 报告 ANSI 颜色代码支持。我不知道 jsch API,但你应该在这里做的是使用一个完全不支持颜色的哑终端。
  • 你能建议我在哪里设置 PtyType(哑)
  • 我们需要看看打开频道的代码。
  • @Martin 添加了代码。

标签: java ssh jsch


【解决方案1】:

这些是ANSI escape codes,通常由终端客户端解释以漂亮地打印输出。

您会得到这些,因为默认情况下,JSch“shell”通道会为会话请求pseudo terminal。一般来说,使用“shell”通道进行自动化是个坏主意。

但如果您出于某种原因确实需要,请通过调用setPty 禁用伪终端:

channel.setPty(false);

但在 99% 的情况下,这是一个坏主意。试图模拟人类很容易出错。当服务器更新时,命令的人机交互功能往往会发生变化(得到改进),这反过来又会破坏您的代码。

你最好问关于你的最终目标的新问题(你想用top做什么?),因为你很可能走错了路。


相关问题:

【讨论】:

    猜你喜欢
    • 2018-11-21
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多