2012-07-20 5 views
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(); 

의견을 보내 주셔서 감사합니다.

답변

관련 문제