どのようにJavaでのRuntime.exec()を介してユーザとPWDを渡します

yogevレヴィ:

私は、特定のユーザーの下でのJava 1.8とOSのSolaris 11私のプログラムの実行を使用して簡単なコマンドを実行しようとしているとコマンドは、スーパーユーザで実行する必要があります

ここでのコマンドは次のとおりです。

Runtime.getRuntime().exec("su - root -c 'pargs -l 1111'");

私はその作業罰金が条でコマンドを実行して、パスワードや温家宝を求めるならば、私は結果を取得するパスワードを入力します。

問題は、私はここにJavaでそれを実行WENである私のコードです

Process proc = Runtime.getRuntime().exec("su - root -c 'pargs -l 1111'");
PrintWriter out = new PrintWriter(new OutputStreamWriter(proc.getOutputStream()));
out.println(password);
out.flush();
int exitCode= proc.waitFor();
System.out.println(exitCode);//exitCode = 1
BufferedReader pArgs= new BufferedReader( new InputStreamReader(proc.getInputStream()));
if((line=pArgs.readLine()) != null)
{
    //do something
}
else
{
    //something not working = ERROR 
}

パスワードのセットの中で何かが正しいバットが私はわからないではありませんので、私はラインがnullに等しいと思います

私が間違って何をやっていますか?

yogevレヴィ:

すべての答えをありがとうございました。しかし、私の解決策は少し違っていました。これは、両方のプロセスから読み書きすることができ、外部ファイルを使用することを決めました。全体の目標は、(ウォッチドッグ)ルートで実行中のプロセスが落ちる場合には、再び握手を行うことでした。

だから今のコマンドを使用する必要はありません

Runtime.getRuntime().exec("su - root -c 'pargs -l 1111'");

ルート・プロセスが実行を開始すると、それがファイルに拍子を記録します。(ファイルごとにX時間を読み込む)、ユーザのプロセスは署名が変更されたことを発見した場合と、彼は再び握手を行います。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=119855&siteId=1