Sha256: b7376615488a88f4a9c4f62ed8f4c6358ee7273d758fce86595a7f2546d3c2a5

Contents?: true

Size: 813 Bytes

Versions: 9

Compression:

Stored size: 813 Bytes

Contents

#! /usr/bin/env ruby

require 'json'

conf = ARGV[0] ? JSON.parse(ARGV[0], {symbolize_names: true}) : {}

defaults = {
  port:    conf[:default_port] || 22,
  timeout: conf[:default_timeout] || 4,
}

conf[:hosts] or raise "hosts config required"

setup = conf[:hosts].map {|h|
  opt = h.is_a?(Hash) ? h : {host: h}
  raise "host is required" unless opt[:host]
  opt = defaults.merge(opt)
  opt[:name] ||= opt[:host]
  opt
}

require 'socket'
require 'timeout'
get = ->(args) {
  warn args[:host]
  data = {_info: {}}
  begin
    data[:_info][:banner] = timeout(args[:timeout]) {
      TCPSocket.open(args[:host], args[:port]).readline
    }.chomp
    data[:ok] = true
  rescue TimeoutError
    data[:ok] = false
  end
  data
}

output = Hash[setup.map {|opt| [opt[:name], get[opt]]}]
puts JSON.generate(output)


Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
panoptimon-0.4.5 collectors/ssh/ssh
panoptimon-0.4.4 collectors/ssh/ssh
panoptimon-0.4.2 collectors/ssh/ssh
panoptimon-0.4.1 collectors/ssh/ssh
panoptimon-0.4.0 collectors/ssh/ssh
panoptimon-0.3.0 collectors/ssh/ssh
panoptimon-0.2.0 collectors/ssh/ssh
panoptimon-0.1.0 collectors/ssh/ssh
panoptimon-0.0.2 collectors/ssh/ssh