2017-03-29 23 views
0

我已經研究了相當長的一段時間,並且還沒有解決我的問題。下面是我收到的錯誤:'require'的Ruby LoadError問題

C:/Ruby23/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- nexpose-runner/constants (LoadError) 
    from C:/Ruby23/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in require' 
    from scan.rb:4:in `<main>' 

這裏是我的代碼:

require 'nexpose' 
require 'csv' 
require 'json' 
require 'nexpose-runner/constants' 
require 'nexpose-runner/scan_run_description' 

module NexposeRunner 
module Scan 
def Scan.start(options) 

    run_details = ScanRunDescription.new(options) 
    run_details.verify 

    nsc = get_new_nexpose_connection(run_details) 

    site = create_site(run_details, nsc) 

    start_scan(nsc, site, run_details) 

    reports = generate_reports(nsc, site, run_details) 

    verify_run(reports[0]) 
end 

def self.generate_reports(nsc, site, run_details) 
    puts "Scan complete for #{run_details.site_name}, Generating Vulnerability Report" 
    vulnerbilities = generate_report(CONSTANTS::VULNERABILITY_REPORT_QUERY, site.id, nsc) 
    generate_csv(vulnerbilities, CONSTANTS::VULNERABILITY_REPORT_NAME) 

    puts "Scan complete for #{run_details.site_name}, Generating Vulnerability Detail Report" 
    vuln_details = generate_report(CONSTANTS:: VULNERABILITY_DETAIL_REPORT_QUERY, site.id, nsc) 
    generate_csv(vuln_details, CONSTANTS::VULNERABILITY_DETAIL_REPORT_NAME) 

    puts "Scan complete for #{run_details.site_name}, Generating Software Report" 
    software = generate_report(CONSTANTS::SOFTWARE_REPORT_QUERY, site.id, nsc) 
    generate_csv(software, CONSTANTS::SOFTWARE_REPORT_NAME) 

    puts "Scan complete for #{run_details.site_name}, Generating Policy Report" 
    policies = generate_report(CONSTANTS::POLICY_REPORT_QUERY, site.id, nsc) 
    generate_csv(policies, CONSTANTS::POLICY_REPORT_NAME) 

    puts "Scan complete for #{run_details.site_name}, Generating Audit Report" 
    generate_template_report(nsc, site.id, CONSTANTS::AUDIT_REPORT_FILE_NAME, CONSTANTS::AUDIT_REPORT_NAME, CONSTANTS::AUDIT_REPORT_FORMAT) 

    puts "Scan complete for #{run_details.site_name}, Generating Xml Report" 
    generate_template_report(nsc, site.id, CONSTANTS::XML_REPORT_FILE_NAME, CONSTANTS::XML_REPORT_NAME, CONSTANTS::XML_REPORT_FORMAT) 

    [vulnerbilities, software, policies] 
end 

def self.verify_run(vulnerabilities) 

    raise StandardError, CONSTANTS::VULNERABILITY_FOUND_MESSAGE if vulnerabilities.count > 0 

end 

def self.start_scan(nsc, site, run_details) 

    puts "Starting scan for #{run_details.site_name} using the #{run_details.scan_template} scan template" 
    scan = site.scan nsc 

    begin 
    sleep(3) 
    stats = nsc.scan_statistics(scan.id) 
status = stats.status 
    puts "Current #{run_details.site_name} scan status: #{status.to_s} -- PENDING: #{stats.tasks.pending.to_s} ACTIVE: #{stats.tasks.active.to_s} COMPLETED #{stats.tasks.completed.to_s}" 
    end while status == Nexpose::Scan::Status::RUNNING 
end 

def self.create_site(run_details, nsc) 
    puts "Creating a nexpose site named #{run_details.site_name}" 
    site = Nexpose::Site.new run_details.site_name, run_details.scan_template 
    run_details.ip_addresses.each { |address| 
     site.add_ip address 
    } 
    if run_details.engine 
    site.engine = run_details.engine 
    end 
    site.save nsc 
    puts "Created site #{run_details.site_name} successfully with the following host(s) #{run_details.ip_addresses.join(', ')}" 

    site 
end 

def self.get_new_nexpose_connection(run_details) 
    nsc = Nexpose::Connection.new run_details.connection_url, run_details.username, run_details.password, run_details.port 
    nsc.login 
    puts 'Successfully logged into the Nexpose Server' 
    nsc 
end 

def self.generate_report(sql, site, nsc) 
    report = Nexpose::AdhocReportConfig.new(nil, 'sql') 
    report.add_filter('version', '1.3.0') 
    report.add_filter('query', sql) 
    report.add_filter('site', site) 
    report_output = report.generate(nsc) 
    CSV.parse(report_output.chomp, {:headers => :first_row}) 
end 

def self.generate_template_report(nsc, site, file_name, report_name, report_format) 
    adhoc = Nexpose::AdhocReportConfig.new(report_name, report_format, site) 
    data = adhoc.generate(nsc) 
    File.open(file_name, 'w') { |file| file.write(data) } 
end 

def self.generate_csv(csv_output, name) 
    CSV.open(name, 'w') do |csv_file| 
    csv_file << csv_output.headers 
    csv_output.each do |row| 
     csv_file << row 
     if name == CONSTANTS::VULNERABILITY_REPORT_NAME 
     puts '--------------------------------------' 
     puts "IP: #{row[0]}" 
     puts "Vulnerability: #{row[1]}" 
     puts "Date Vulnerability was Published: #{row[2]}" 
     puts "Severity: #{row[3]}" 
     puts "Summary: #{row[4]}" 
     puts '--------------------------------------' 
     end 
    end 
    end 
    end 
end 
end 

在命令提示符下,我在下面的代碼進入運行它(這個文件被稱爲掃描。 RB):

ruby scan.rb "http://localhost:3780" "username" "password" "3780" "webpage" "ip-address" "full-audit-widget-corp"

到目前爲止,我已經試圖改變requirerequire_relative,以及重新安排路徑(如puttin例如,整個路徑)。兩者都沒有工作。

我也確保安裝了Ruby開發工具包。

謝謝!

+2

您是否安裝了NexposeRunner? – Casper

+0

@Casper,這解決了我的問題!你可以把它作爲答案,我可以選擇它嗎? – Glitteropia

回答

1

請檢查當地的寶石列表:寶石名單 - 本地

相關問題