Моя команда имеет первую часть, результаты которой передаются во вторую часть. Когда я запускаю код, мне всегда возвращаются результаты первой части, и фильтр, примененный второй частью, очевидно, не выполняется.
Итак, я получаю:
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
Где я want
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
}
}
}
Это как-то связано с тем, что конвейерный процесс выполняется в другой оболочке на целевом сервере? Если да, то как мне достичь цели по возвращению отфильтрованного списка?