我能够在Windows上成功执行此操作:
builder = new ProcessBuilder("cmd.exe", "/c", "nmap " + ipRange, "&cd");
但这在OSX上失败了:
builder = new ProcessBuilder("/usr/local/bin/nmap", ipRange);
错误:
“在2012-03-22 09:51 PDT
启动Nmap 5.51(http://nmap.org)无效的主机表达式:127.0.0.1 -p T:80 - 只允许在IPv6地址中使用冒号,然后需要-6开关
戒烟!“
为OSX创建ProcessBuilder的正确方法是什么? 感谢
答案 0 :(得分: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");