gpt4 book ai didi

java - 如何应对交互式 Linux 命令?

转载 作者:行者123 更新时间:2023-11-30 03:44:17 25 4
gpt4 key购买 nike

我有允许我通过 ssh 连接、运行命令并获得响应的代码。它工作正常,但仅适用于非交互式命令(如:lsdf,它们在运行后立即返回结果)。问题是当我尝试运行一些交互式命令,如 toppasswd 时,代码一直在等待响应(当然没有响应)。

如何应对交互式命令?我真的不关心输出,我只想运行它。

public String runCommand(String command)  throws Exception {

// SSH Channel
ChannelExec channelssh = (ChannelExec) session.openChannel("exec");

// Execute command
channelssh.setCommand(command);
channelssh.connect();

InputStream inputStream = channelssh.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder stringBuilder = new StringBuilder();
String line;

while ((line = bufferedReader.readLine()) != null)
{
stringBuilder.append(line);
stringBuilder.append('\n');
}

channelssh.disconnect();
return stringBuilder.toString();
}

最佳答案

1、可以使用ChannelShell。这是一个例子:Shell.java .这篇文章阐明了 exec 和 shell 之间的区别:what's the exact differences between jsch ChannelExec and ChannelShell?

2,我试过ChannelExec.setPty(true)。通过这种方式,我可以获得输出。然而,它并没有停止。

关于java - 如何应对交互式 Linux 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15250796/

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