出力ストリームでパスワードを送信して、LinuxのユーザーパスワードをJavaプログラムから変更しようとしていますが、変更されていません。
私のJavaプログラムは
Process process = Runtime.getRuntime().exec("sudo passwd sampleuser");
OutputStream outputStream = process.getOutputStream();
InputStream inputStream = process.getInputStream();
PrintWriter printWriter=new PrintWriter(outputStream);
printWriter.write("123456");
printWriter.write("\n");
printWriter.flush();
私のプログラムはここで失敗し、パスワードを要求しますが、この場合は望ましくありません。
Javaプログラムからパスワードを提供する可能性はありますか?あなたは私にそれをどのように成功させるか、またはそれのために利用可能なシェルAPIがありますか?
シェルスクリプトを使用してJavaプログラムから呼び出すと、同じことが成功します。
Process process = Runtime.getRuntime().exec("bash first.sh");
私のシェルスクリプトは
i="123456"
echo -e $i"\n"$i|sudo -S passwd sampleuser
ユーザーパスワードを正常に変更します。