Я запускаю утилиту SSH в комплекте с Cygwin, используя класс ProcessBuilder в Java. Все работает нормально. Я подключаюсь к серверу Linux через SSH, могу запускать команды и читать выходные данные.Углубленный текст при чтении из внешнего процесса в Java
Однако, когда выход возвращается, это происходит только после входа в систему на сервере и выполнения команд, например, список каталогов ls
, возвращает что-то вроде этого:
InputStream: [email protected]:/scripts/common# ls
InputStream: [00m[00mA1-4.yaml[00m [01;32mscip-1.2.0.linux.x86_64.gnu.opt.qso[00m
InputStream: [00madditional_files.txt[00m [01;32mscip-1.2.0.linux.x86_64.gnu.opt.spx[00m
Насколько я понял, это является только происходит с командой перечисления файлов. Например, когда я запускаю другие команды, такие как время и т. Д., Он показывает нормальный выход.
Можете ли вы предложить, что такое добавление этих случайных символов к имени файла?
Я даже пытался использовать кодировку UTF8, но ничего не меняется. Когда я напрямую вхожу в систему с помощью командной строки, я не вижу этих результатов. Однако cmdline показывает имена файлов в цветных значениях. Разве есть дополнительная информация, которая не является ASCII?
ОК, я просто понял, что это было действительно так. Значения коротких цветовых кодов, которые печатаются в символы без ascii, добавляются, и поскольку такой исходный вывод выглядит отлично в cmdline, он показывает разные значения в извлеченном тексте. С вызовом: ls --color = none, он работает отлично. – Johnydep
Угадайте, кто-то должен удалить этот вопрос. Спасибо – Johnydep
Вы должны на самом деле создать ответ на свой вопрос, потому что он может помочь кому-то в будущем. –