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|