4

JSch を使用してターゲット ホストでコマンドを実行しようとしていますが、「sudo echo hello」などのパスフレーズを指定して、現在のユーザーのパスワードを入力できるようにしたいと考えています。

プロンプトを適切に操作する方法がわかりません。以下のコードは、パスワードを提供しようとした 2 つの方法を示しています。いずれも失敗してメッセージが表示されます。

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();

ご提案いただきありがとうございます。

4

1 に答える 1