Я работаю над настольным приложением, которое будет анализировать некоторые вещи на виртуальной машине.
Я могу писать и читать после SSH соединения.
Я сохраняю ввод во временном .txt файле. Теперь я хочу сравнить его, скажем, с другим .txt файлом, который содержит правильные amount/name каталогов.
Например, если я хочу проверить каталоги на ../workspace/ с помощью приведенного ниже кода из scanForVm. Содержимое (на самом деле не только вывод команды) сохраняется в файл .txt.
У меня проблема в том, что он записывает в него какие-то ненужные вещи, и я не могу сравнить его с другим моим .txt файлом.
Я пытался найти ответ уже несколько часов и пробовал разные подходы.
public void scanForVm(MouseEvent event) throws IOException, InterruptedException {
if (event.getSource() == scanButton) {
networkCheck.scanNetwork();
sshConnection.connectionToSsh("ls -d workspace/*/\n");
sshConnection.readOutput();
}
}
а потом:
public void readOutput() throws IOException, InterruptedException {
Path file = Paths.get(" / path / To / Text.txt ");
System.out.println(outputDescr); //Debug format
InputStream stdout = new StreamGobbler(sess.getStdout());
ByteArrayOutputStream result = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int read;
String output = "";
while ((read = stdout.read(buffer)) != -1) {
result.write(buffer, 0, read);
Files.write(file, buffer);
Thread.sleep(2000);
System.out.println(output);
}
}
Я хочу, чтобы ввод из виртуальной машины был действительно читаемым.
Теперь я получаю это:
Добавлена идентификация:
/path/path/path/.ssh/...
[0m[01;36mworkspace/directory/[0m [01;36mworkspace/directory2/[0m
ls -d workspace/*/
И я хочу, чтобы это было только:
workspace/directory/
workspace/directory2/




[0m и [01;36m — идентификаторы цвета. [0m означает отсутствие цвета, [01;36m означает светло-голубой. Их можно разобрать с помощью регулярного выражения, например \[(0|\d+;\d+)m.
В вашем конкретном примере все, что начинается со светло-голубого цвета и возвращается к стандартному в конце, можно найти с помощью \[01;36m(.+?)\[0m с группой 1, содержащей нужную строку. Вы можете проверить это здесь: https://regex101.com/r/A906Na/1