gpt4 book ai didi

java - 当我使用 JSch 运行命令时删除不需要的字符

转载 作者:太空宇宙 更新时间:2023-11-04 11:26:48 24 4
gpt4 key购买 nike

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

像这些。我随之得到了不需要的字符。我怎样才能删除它们?

最佳答案

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

您得到这些,因为 JSch“shell” channel 默认请求 pseudo terminal session 。一般来说,使用“shell” channel 进行自动化是一个坏主意。

但是,如果您由于某种原因确实,请通过调用 setPty 禁用伪终端。 :

channel.setPty(false);

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

您最好就您的最终目标提出新问题(您想使用 top 做什么?),因为您可能走错了路。

<小时/>

相关问题:

关于java - 当我使用 JSch 运行命令时删除不需要的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44276916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com