2012-03-22 3 views
0

Я смог успешно выполнить это на окнах:ProcessBuilder на OSX

builder = new ProcessBuilder("cmd.exe", "/c", "nmap " + ipRange, "&cd");

Но это на OSX не удается:

builder = new ProcessBuilder("/usr/local/bin/nmap", ipRange);

С ошибкой:

«Отправная Nmap 5.51 (http://nmap.org) в 2012-03-22 09:51 PDT

Недопустимое выражение хоста: 127.0.0.1 -p T: 80 - двоеточия разрешены только в IPv6-адресах, а затем вам нужен переключатель -6

QUITTING! "

Каков правильный способ создания этого ProcessBuilder для OSX? Thanks

ответ

3

Я предполагаю, что вы пытаетесь передать два отдельных параметра в качестве одной строки в ipRange. ProcessBuilder, вероятно, обертывает строку ipRange String кавычками и смешивает синтаксис команды. Вы должны добавить все параметры отдельно

Не нравится:

new ProcessBuilder("/usr/local/bin/nmap", "-foo foo -bar bar"); 

, но как это:

new ProcessBuilder("/usr/local/bin/nmap", "-foo", "foo", "-bar", "bar"); 
+0

Большое спасибо, что решили. Любые идеи, почему это не проблема в Windows? – user1286505

+0

У разных ОС есть другой синтаксис командной строки –

+0

В принципе, если ваша предыдущая версия работала над окнами, вам повезло. Но ProcessBuilder предназначен только для работы, если вы укажете каждый параметр отдельно. К сожалению, документы не являются конкретными. –

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