2017-08-21 39 views
0

我試圖使用API​​和Ruby將Windows設備從Rapid 7導出爲CSV。Rapid 7將Windows設備導出爲CSV

當我運行下面的腳本是亂扔的錯誤:

NoMethodError: undefined method 'each' for #<Nexpose::AdhocReportConfig:0x000000 
029bf4b8> 
     from (irb):232:in block in irb_binding 
     from C:/Ruby24-x64/lib/ruby/2.4.0/csv.rb:1299:in 'open' 
     from (irb):231 
     from C:/Ruby24-x64/bin/irb.cmd:19:in '<main>' 

的代碼,我跑是:

require 'nexpose' 
require 'csv' 

include Nexpose 

query = " 
SELECT da.host_name AS Name, dos.description AS OS 
FROM dim_asset da 
    JOIN dim_operating_system dos USING (operating_system_id) 
    JOIN dim_host_type dht USING (host_type_id) 
    JOIN dim_site_asset dsa USING (asset_id) 
    JOIN dim_site ds USING (site_id) 
Where (dos.description LIKE '%Windows%' AND da.host_name IS NOT NULL)" 

@nsc = Connection.new('192.168.0.1', 'user', 'pswd') 
@nsc.login 

report = Nexpose::AdhocReportConfig.new(nil, 'sql') 
report.add_filter('version', '1.1.0') 
report.add_filter('query', query) 

@nsc.logout 

headers = ["Name","OS"] 

CSV.open('C:\file.csv', 'wb', { force_quotes: true }) do |csv| 
    report.each do |reports| 
    if csv.tell() == 0 # file is empty, so write header 
     csv << headers 
    end 
    csv << [report.Name, report.OS] 
    end 
end 

回答

0

不能對實例調用.eachNexpose::AdhocReportConfig

嘗試類似這樣:

report = Nexpose::AdhocReportConfig.new(nil, 'sql') 
report.add_filter('version', '1.1.0') 
report.add_filter('query', query) 
report_output = report.generate(@nsc) 
... 
CSV.open('C:\file.csv', 'wb', { force_quotes: true }) do |csv| 
    report_output.each do |reports| 
... 

在此處查看完整示例:https://community.rapid7.com/docs/DOC-2733