gpt4 book ai didi

java - JSch 如何从一系列管道命令中检索结果

转载 作者:行者123 更新时间:2023-12-01 18:48:32 25 4
gpt4 key购买 nike

我的命令有第一部分,其结果通过管道传输到第二部分。当我运行代码时,我总是返回第一部分的结果,而第二部分应用的过滤器显然没有执行。

所以我得到:

CONTAINER ID   IMAGE  COMMAND   CREATED      STATUS       PORTS   NAMES
abcdeff a/b/1 "usr/.." 15 mins ago Up to 2 mins something.1.2
123abcd a/b/2 "usr/.." 32 mins ago exited something.1.3
234456d a/b/3 "usr/.." 2 days ago exited something.1.4

我想去的地方

CONTAINER
abcdeff
123abcd
234456d
public class Test {

private static COMMAND =
"echo \"password\" | sudo -S bash -c \"docker container ls --all | awk '{print $1}'\""

executeExecCommand(command){
JSch jsch = new JSch();
Session session=jschgetSession(username, ipaddress, 22);
session.setConfig("StrictHostKeyChecking", "no");
session.setConfif("PreferredAuthentications", "password");
Channel channel = session.openChannel("exec");
((ChannelExec)channel).setCommand(COMMAND);
channel.setInputStream(null);
((ChannelExec)channel).setErrStream(System.err);
InputStream input = channel.getInputStream();
InputStream error = channel.getExtInputStream();
channel.connect();
List<String> output = new ArrayList<>();
List<String> errorOutput = new ArrayList<>();

try (InputStreamReader inputReader = new InputStreamReader(input);
BufferedReader bufferedReader = new BufferedReader(inputReader);
InputStreamReader errorReader = new InputStreamReader(error)) {

String line = null;
while (true) {
while ((line = bufferedReader.readLine() != null {
output.add(line:
System.out.println("line = " + line);

etc
etc
}
}
}

这与在目标服务器上的不同 shell 中执行的管道进程有关吗?如果是这样,我如何实现返回过滤列表的目标?

最佳答案

我需要转义$。命令 =“echo\”密码\” | sudo -S bash -c\”docker 容器 ls --all | awk '{print\$1}'\""有效

请注意,如果我想进一步开发这个命令来删除容器,例如,我还需要转义反引号。

COMMAND = "echo\"密码\"| sudo -S bash -c\"docker 容器 rm `docker 容器 ls --all | awk '{print\$1}'\`\""

它需要一个双反斜杠来转义 $ 和反引号。它在这里显示为单个反斜杠

关于java - JSch 如何从一系列管道命令中检索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59773169/

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