# File lib/nmap/parser.rb, line 229 def self.parsescan(nmap, args, targets = []) # :yields: parser if args =~ /[^-]-o|^-o/ raise "Output option (-o*) passed to parsescan()" end # Enable debugging, give us our XML output, pass args command = nmap + " -d -oX - " + args + " " command += targets.join(" ") if targets.any? p = nil begin # First try popen3() if it loaded successfully.. Open3.popen3(command) do |sin, sout, serr| p = parseread(sout) end rescue NameError # ..but fall back to popen() if not IO.popen(command) do |io| p = parseread(io) end end yield p if block_given? p end