我想从我的Java应用程序Jsch和ChannelExec中使用“ scp”命令。命令可以,但是如何传递密码?
直接在服务器上它将像这样:
$ 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”也许我不知道)
还是有其他解决方案?
谢谢你的时间 !
最佳答案
连接之前,请使用以下代码行。
channelExec.setPty(true);
有关更多详细信息,请参阅下面的文档。
https://epaul.github.io/jsch-documentation/simple.javadoc/com/jcraft/jsch/ChannelExec.html#setPtyType-java.lang.String-