我想构建一些定期执行ping扫描的内容,以检测显示和退出网络的主机。有没有一种简单的方法来读取Ruby的nmap输出?我的偏好是避免使用第三方库。
非常感谢!
答案 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功能是明智的。