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();
ご提案いただきありがとうございます。