Jsch ChannelExec: Как передать пароль на сервер после команды? - PullRequest
0 голосов
/ 07 июня 2019

Я хотел бы использовать команду "scp" из моего Java-приложения Jsch и ChannelExec.Команда в порядке, но как передать мой пароль?

Непосредственно на сервере это будет выглядеть так:

$ scp user@server:/myPath/* .
$ user@server's password:
(informations on files copied)

Команда и пароль находятся в 2 отдельных строках.

Чтобы восстановить это в Java, я сделал это:

ChannelExec channelExec = (ChannelExec) session.openChannel("exec"); //$NON-NLS-1$
channelExec.setCommand(scpCommand);
channelExec.connect();
try (OutputStream outputStream = channelExec.getOutputStream()) {
    pause(5000);
    outputStream.write((password + "\n").getBytes()); //$NON-NLS-1$
    outputStream.flush();
}

(read result and terminate session)

Но, как вы можете догадаться, это не сработает.

У вас есть подсказки, как решить эту проблему?Должен ли я передать пароль в команде, отделенный специальным символом?('\ n' может быть, я не знаю) Или есть другое решение?

Спасибо за ваше время!

1 Ответ

1 голос
/ 07 июня 2019

Перед подключением используйте приведенную ниже строку кода.

channelExec.setPty(true);

Подробнее см. Ниже в документации.https://epaul.github.io/jsch-documentation/simple.javadoc/com/jcraft/jsch/ChannelExec.html#setPtyType-java.lang.String-

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...