script de shell de linux en java

Estoy usando el siguiente código de shell en Linux. Quiero que se haga en Java. Quiero llamar a este comando en JAVA.

mailq | grep -B1 -i temporarily | grep -iv deferred | \
egrep -i 'jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec' | \
awk -F" " '{print $1}' | awk '{print  substr($0,10,14)}'

El comando mailq muestra los mensajes de correo en cola con su Id respectivo y sus errores. Al igual que en el comando anterior, estoy buscando mensajes con un mensaje deshabilitado temporalmente y tomando el mensaje anterior donde su identificación está presente en ** 09089 así revisando el mes y luego imprimiendo los últimos 5 caracteres de esa identificación

preguntado el 03 de mayo de 12 a las 09:05

Tal vez pueda explicar qué se supone que debe hacer este comando. En Ubuntu, escribí man mailq y consiguió No manual entry for mailq. Sé que puedo buscarlo en Google, pero facilitar el trabajo de aquellos que quieren ayudar puede ser una buena idea... Aquí, esperas que las personas conozcan bien mailq, awk y Java (no JAVA, por cierto). Estoy seguro de que hay muchas de esas personas, pero ¿están leyendo esta pregunta? -

Gracias Philho, gracias por señalarlo, muy apreciado:

4 Respuestas

  String cmd = "mailq | grep -B1 -i temporarily | grep -iv deferred | "
              +"egrep -i 'jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec' |" 
              + " \'{print $1}\' | awk \'{print  substr($0,10,14)}\'";
    try
    {
      ProcessBuilder pb = new ProcessBuilder("bash", "-c", cmd);
      Process p = pb.start();
      p.destroy();
    }
    catch (Exception e)
    {e.printStackTrace();}

contestado el 03 de mayo de 12 a las 09:05

Gracias Mapa de bits ¿Hay alguna otra forma de llamar al comando anterior en JAVA? Dado que el comando mailq existe en Linux, ¿hay un comando en JAVA equivalente al comando mailq en Linux para que pueda escribir este código de shell en JAVA directamente? Yagyavalk Bhatt

No hay biblioteca para mailq Java. - De mapa de bits

contestado el 03 de mayo de 12 a las 09:05

En general, este tipo de problemas se maneja en Java mediante la clase 'Runtime'. Aquí Ejemplo de tiempo de ejecución java Puedes encontrar un ejemplo de cómo hacerlo.

Sin embargo, el enfoque más nuevo sería usar la clase ProcessBuilder

contestado el 03 de mayo de 12 a las 09:05

Si entendí bien, quieres hacer lo mismo que este comando de shell, pero en Java puro, no ejecutándolo desde Java. Una ventaja del puerto puede ser la portabilidad.

Creo que quieres Correo Java para hacer el acceso al correo. No soy un especialista de esta API, pero la usé en una pequeña Procesamiento programa para mostrar su uso: Bosquejo de correo electrónico.

Luego, debe filtrar los resultados y aislar la parte que desea, lo cual no es muy difícil.

contestado el 04 de mayo de 12 a las 09:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.