2012-05-03 2 views
2

Я использую ниже код оболочки в Linux я хочу, чтобы это сделать в Java.I хочет вызвать эту команду в JAVALinux сценарий оболочки в 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)}' 

Команда mailq показывает очередь сообщений электронной почты с там соответствующим Идентификаторы и ошибки. Как и в команде выше, я ищу сообщения с временно отключенным сообщением в нем и беря вышеуказанное сообщение, где его идентификатор присутствует в * * 09089 как это проверяет месяц, а не печатает последние 5 символов этого идентификатора

+0

Возможно, вы можете объяснить, что должна делать эта команда. На Ubuntu я набрал 'man mailq' и получил' No manual entry for mailq'. Я знаю, что могу это сделать, но облегчить работу тех, кто хочет помочь, может быть хорошей идеей ... Здесь вы ожидаете, что люди будут хорошо знать mailq, awk и Java (а не JAVA, BTW). Я уверен, что таких людей много, но читают ли они этот вопрос? – PhiLho

+0

Спасибо, что указали, что высоко оценили –

ответ

3
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();} 
+0

Спасибо Bitmap Есть ли другой способ вызвать команду выше в JAVA, поскольку в Linux существует команда mailq, есть ли команда в JAVA, эквивалентная команде mailq в Linux, чтобы я мог писать этот код оболочки в JAVA напрямую –

+0

Нет библиотеки для mailq Java. – Bitmap

0

в целом этот тип вопросов обрабатывается в Java с помощью класса '' во время выполнения. Здесь Runtime example java вы можете найти пример того, как сделать это

Поздние подход будет использовать класс ProcessBuilder хотя

0

Если я правильно понял, вы хотите сделать то же самое, что эта команда оболочки, но в чистая Java, а не запустив ее с Java. Одним из преимуществ порта может быть мобильность.

Я думаю, вы хотите JavaMail сделать доступ по почте. Я не специалист этого API, но я использовал его в небольшой программе Processing, чтобы показать ее использование: Email sketch.

Затем вам нужно отфильтровать результаты и изолировать нужную деталь, что не очень сложно.

Смежные вопросы