用Ruby读取nmap输出(基本问题)

时间:2012-05-20 20:42:08

标签: ruby network-programming nmap

我想构建一些定期执行ping扫描的内容,以检测显示和退出网络的主机。有没有一种简单的方法来读取Ruby的nmap输出?我的偏好是避免使用第三方库。

非常感谢!

3 个答案:

答案 0 :(得分:1)

尝试解析Nmap的文本输出是错误的方法。格式在过去已经多次改变,并且将来肯定会改变。执行此操作的正确方法是解析使用-oX参数生成的Nmap的XML输出。已经为此设计了一些Ruby库(Chris Gates介绍了这种方法on his blog),或者您可以从XML解析器库开始并自行编写。 Nokogiri是Ruby中非常好的XML解析库。

答案 1 :(得分:0)

您可以尝试这样的事情:

require 'open3'
stdin, stdout, stderr = Open3.popen3('nmap -sP 192.168.1.0/24')

然后你可以解析stdout和stderr并使用标准的Ruby获得你想要的任何东西。

答案 2 :(得分:0)

已经了解到只需在命令周围使用反引号就可以将输出捕获为变量:

test = nmap -sP 192.168.1.0/24 p'测试:' put test.split(“\ n”)

似乎工作得很完美。然而,正如bonsaiviking指出的那样,研究nmap的XML功能是明智的。