bin/ssh_scan in ssh_scan-0.0.40 vs bin/ssh_scan in ssh_scan-0.0.41

- old
+ new

@@ -18,11 +18,11 @@ "timeout" => 5, "threads" => 5, "verbosity" => nil, "logger" => Logger.new(STDERR), "fingerprint_database" => ENV['HOME']+'/.ssh_scan_fingerprints.yml', - "output_type" => "json" + "output_type" => nil } # Reorder arguments before parsing def reorder_args!(order, opt_parser) old_args = opt_parser.default_argv @@ -104,11 +104,12 @@ end end opts.on("-o", "--output [FilePath]", "File to write JSON output to") do |file| - $stdout.reopen(file, "w") + options["output"] = file + # $stdout.reopen(file, "w") end opts.on("--output-type [json, yaml]", "Format to write stdout to json or yaml") do |output_type| options["output_type"] = output_type @@ -236,12 +237,26 @@ # Perform scan and get results scan_engine = SSHScan::ScanEngine.new() results = scan_engine.scan(options) -if options["output_type"] == "yaml" +if options["output_type"] == "yaml" && (options["output"].nil? || options["output"].empty?) puts YAML.dump(results) -elsif options["output_type"] == "json" +elsif options["output_type"] == "json" && (options["output"].nil? || options["output"].empty?) + puts JSON.pretty_generate(results) +elsif (options["output_type"].nil? || options["output_type"].empty?) && (!options["output"].nil? && options["output"].split(".").last.downcase == "yml") + open(options["output"], 'w') do |f| + f.puts YAML.dump(results) + end +elsif (options["output_type"].nil? || options["output_type"].empty?) && (!options["output"].nil? && options["output"].split(".").last.downcase == "json") + open(options["output"], 'w') do |f| + f.puts JSON.pretty_generate(results) + end +elsif (options["output_type"].nil? || options["output_type"].empty?) && options["output"] + open(options["output"], 'w') do |f| + f.puts JSON.pretty_generate(results) + end +else puts JSON.pretty_generate(results) end if options["unit_test"] == true results.each do |result|