2
JSch를 사용하여 대상 호스트에서 명령을 실행하려고합니다. 예를 들어 "sudo echo hello"와 같은 암호를 지정할 수 있기를 원합니다. 현재 사용자의 암호를 입력하십시오.Jsch에서 SSH를 통해 암호가 필요한 명령을 실행하는 방법
프롬프트와 올바르게 상호 작용하는 방법을 모르겠다.
는 sudo를 : :
: 더 TTY 존재없고 askpass 프로그램은 내가이 함께 일하고
을 지정하지 아래 코드는 나는 그들이 모든 메시지와 함께 실패, 암호를 제공하기 위해 노력 두 가지 방법을 보여줍니다
JSch jsch=new JSch();
String host="192.168.0.17";
String user="xxx";
String passwd="xxx";
Session session=jsch.getSession(user, host, 22);
session.setPassword(passwd);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
ChannelExec channel=(ChannelExec)session.openChannel("exec");
channel.setCommand("sudo echo hello");
channel.setErrStream(System.err);
channel.connect();
int id = 1;
// must write on output stream?
if(id==0){
channel.getOutputStream().write(passwd.getBytes());
}
// must read on input stream?
else if(id==1){
channel.getInputStream().read(passwd.getBytes());
}
channel.disconnect();
의견을 보내 주셔서 감사합니다.