Ruby系统参数

时间:2014-04-22 12:42:51

标签: ruby shell nmap

我正在尝试使用system从ruby程序运行nmap。我想逃避一些防止shell注入的参数,所以我使用以下形式:

system('nmap', '-sn', hostname)

这很好,但是我想使用-oX -选项将xml输出到stdout。以下代码似乎不起作用:

system('nmap', '-sn', '-oX -', hostname)

似乎忽略了-oX -参数,有人可以建议解决方法吗?

1 个答案:

答案 0 :(得分:7)

由于system也会转义参数中的空格,因此系统调用-oX -将被有效地调用为

nmap "-sn" "-oX -" "example.com"

空格是单个参数的一部分。因此,它不会被视为nmap的有效参数。要解决这个问题,你实际上必须将它作为两个参数传递。这里,单个参数中的空格不会被转义:

system('nmap', '-sn', '-oX', '-', hostname)