1

telnetセッションのログインユーザーのIPアドレスを取得したい

だから私は次のコードを書いた:

Process p1 = Runtime.getRuntime().exec(new String[] {"/usr/bin/who", "-m"});
p1.waitFor();

BufferedReader reader = new BufferedReader(new InputStreamReader(p1.getInputStream()));
String line = reader.readLine();

System.out.println("line=" + line);
reader.close();

しかし、私は「null」として出力を取得しています。

期待される出力は次のとおりです。linuspts/1 Dec 10 03:48(172.21.235.48)

4

5 に答える 5

1

この場合、-mオプションを渡すべきではありません。

これは私のために働く:

Process p1 = Runtime.getRuntime().exec(new String[] {"/usr/bin/who"});
于 2012-12-10T07:48:56.723 に答える
0

Java プログラムからパラメータ (オプション) を受け取るシェル スクリプトを作成できます。次に、次のようにJavaからシェルスクリプトを実行できます-

  ProcessBuilder pb = new ProcessBuilder("/PATH/test.sh","-m");
    String line; 
    Process process=pb.start(); 
    java.io.InputStream is = process.getInputStream();
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);

    while ((line = br.readLine()) != null)
    {
        System.out.println(line);
    }
    return br;

test.sh で、引数を取得してコマンドを実行します -

/usr/bin/who $1 (needs to check, not sure)

お役に立てれば。

于 2012-12-10T07:59:14.360 に答える
0

このコードを試してください。who -mそれは私にとってはうまくいき、 UNIX コマンドと同じ出力を返します。

import java.io.*;
public class UserPB
{
        public static void main(String[] args)
        {

                try {
                //      ProcessBuilder pb = new ProcessBuilder("/u01/app/chdir/user.sh");
                        ProcessBuilder pb = new ProcessBuilder("who");
                        Process p;
                        p = pb.start();
                        BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
                        System.out.println("Your Host Details--->"+input.readLine());

                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }

        }
于 2016-06-25T02:56:51.970 に答える
0

を呼び出す前に、プロセスからの入力ストリームを消費してみてくださいwaitFor()

于 2012-12-10T07:54:02.663 に答える
0

返信ありがとうございます。

「dystroy」の返信から、-mが問題を引き起こしていることがわかりました。

--mを試してみましたが、うまくいきました:)

于 2012-12-11T03:55:31.837 に答える