0
Я использую АОH с Shell для запуска нескольких команд против хоста. все работает, но мой вопрос в том, как я могу получить System.out и сохранить это для файла. Я хочу копировать, а не перенаправлять. Я могу сделать то или другое, но не могу сделать то и другое.Копирование System.out в файл с использованием Jsch и Java
try (OutputStream logOutput = new BufferedOutputStream(new FileOutputStream(outputFilePath))) {
try (InputStream login = new BufferedInputStream(new FileInputStream(outputFilePath))) {
JSch jsch = new JSch();
Session session = jsch.getSession(user, host, 22);
session.setPassword(password);
session.setConfig(getProperties());
session.connect(10 * 1000);
Channel channel = session.openChannel("shell");
//channel.setOutputStream(System.out);// I want to activate it as well as the following command
channel.setOutputStream(logOutPut, true);// I am writing it to file
try (PipedInputStream commandSource = new PipedInputStream();
OutputStream commandSink = new PipedOutputStream(commandSource)) {
CommandSender sender = new CommandSender(commandSink);
Thread sendThread = new Thread(sender);
sendThread.start();
channel.setInputStream(commandSource);
channel.connect(15 * 1000);
sendThread.join();
if (sender.exception != null) {
throw sender.exception;
}
}
channel.disconnect();
session.disconnect();
Хороший подход, вы можете добавьте некоторые комментарии к своему коду, как я никогда раньше не делал этого. Также вы можете показать мне, как я могу получить доступ к вашему подклассу? Можете ли вы интегрировать свой ответ с моим кодом, пожалуйста? Я хочу написать вывод outputFilePath и System.out – Moe
. Пример использования примера. Нет смысла добавлять комментарии; каждый метод выполняет то же самое, что и FilterOutputStream, но эта операция применяется ко всем OutputStreams, а не к функции FilterOutputStream. – VGR
Еще раз спасибо за ваш быстрый ответ. теперь я получаю нестационарную переменную, на которую нельзя ссылаться со статического содержимого – Moe