Чтение вывода команды терминала в java с помощью BufferedReader

Новичок в java только начинает, буду признателен за любую помощь. Итак, мой код таков, и по какой-то причине я не могу заставить его работать. Я сидел за этим часами.

package askisi1;

import java.net.*;
import java.util.*;
import java.lang.*;
import java.io.*;


public class Main{

public static void main(String[] args){

    try{

        String command = "ifconfig eth1 | grep -oP '[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}'";
        Process child = Runtime.getRuntime().exec(command);

        System.out.println("So far so good");
        BufferedReader r = new BufferedReader(new InputStreamReader(child.getInputStream()));
        String s;
        while ((s = r.readLine()) != null) {
        System.out.println(s);
        }
        r.close();
        System.out.println("Continue..");
    }
    catch (IOException e) {
        e.printStackTrace();
    }
}



} 

person Stelios Savva    schedule 21.10.2012    source источник
comment
Это может немного дублировать stackoverflow.com/questions/3159913/   -  person Wolfgang Fahl    schedule 21.10.2012
comment
Вы запустили команду, чтобы убедиться, что она производит вывод?   -  person Daniel Gratzer    schedule 21.10.2012
comment
@WolfgangFahl Я изучил вопрос, который вы разместили, прежде чем публиковать свой вопрос, но мне показалось слишком сложным работать с потоком, и потому что я не был знаком с ProcessBuilder. Спасибо, что указали на это.   -  person Stelios Savva    schedule 22.10.2012
comment
@jozefg Да, команда выводит правильный вывод в терминале   -  person Stelios Savva    schedule 22.10.2012


Ответы (1)


Runtime.exec() требуется дополнительная информация для выполнения команды Unix.

Итак, если моя сетевая карта lo0:

String[] command = {
                    "/bin/sh",
                    "-c",
                    "ifconfig lo0 | grep -oP '[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}'"
            }; 
Process child = Runtime.getRuntime().exec(command);
// following here your remaining unchanged code

Это печатает:

So far so good
127.0.0.1
Continue..
person Mik378    schedule 21.10.2012