私はいくつかのシェルコマンドラインをjavaから実行しようとしています。しかし、それはユーザーを切り替えることができないようです。私はユーザーを切り替える間に入力としてパスワードを与える必要があります。javaからlinuxコマンド 'su'コマンドを実行中に入力としてパスワードを与える方法は?
Runtime rtime = Runtime.getRuntime();
Process child = rtime.exec("/bin/sh \n");
BufferedWriter outCommand = new BufferedWriter(
new OutputStreamWriter(child.getOutputStream()));
outCommand.write("su - username");
System.out.println("user switched");
outCommand.flush();
outCommand.write("password");
System.out.println("password entered");
outCommand.flush();
outCommand.write("rm -rf test.txt");
System.out.println("file removed");
outCommand.flush();
outCommand.close();
こんにちは。ありがとう。私はこのコードのようにしようとしました。しかし、まだ達成することができません。 BufferedWriter outCommand =新しいBufferedWriter( 新しいOutputStreamWriter(child.getOutputStream())); BufferedReader bufferedreader =新しいBufferedReader(新しいInputStreamReader(子 .getInputStream())); outCommand.write( "su - username"); strSqlLdrOut = bufferedreader.readLine(); buffer.append(strSqlLdrOut); \t \t buffer.append(System.getProperty( "line.separator")); \t \t System.out.println(バッファ); outCommand.write( "Password"); \t \t outCommand.flush(); – diwa
@ディワ:答えを見てください。コマンドを出力した後、 'newLine'を使う必要があります。あなたはそのコードのどこにでもいません。 –
まだユーザーは切り替えられていません。デバッグする方法はありますか? – diwa