Sha256: 03b0a39f80a42c6ba473b2da4e9f167255828642ba074a398a0b9946b2af7e57

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

#!/usr/bin/env ruby

require 'optparse'
require 'methadone'
require 'rut'
require 'snmp'

class App
  include Methadone::Main
  include Methadone::CLILogging

  attr_accessor :router_ip

  main do |router_ip| 
    @router_ip = router_ip

    SNMP::Manager.open(host: @router_ip, retries: 0,  mib_modules: ["DISMAN-EVENT-MIB", "SNMPv2-MIB"]) do |manager|
      run_and_handle_exceptions do
        response = manager.get_value(["sysUpTimeInstance" , "sysName.0"])
        days = response[0]
        router_name = response[1].capitalize
        puts "#{router_name} has been up #{days}"
      end
    end
  end

  # supplemental methods here

  def self.run_and_handle_exceptions
    begin
      yield
    rescue SNMP::RequestTimeout
      exception_output("Host #{@router_ip} not responding", 1)
    rescue SocketError
      exception_output("#{@router_ip} is an invalid ip address", 2)
    rescue Exception
      exception_output($!.inspect, 99)
    end
  end

  def self.exception_output(output, code)
    puts output
    exit(code)
  end

  # Declare command-line interface here

  description "Shows uptime on your router"
  
  # Require an argument

  arg :router_ip 

  version Rut::VERSION

  use_log_level_option

  go!
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rut-0.0.2 bin/rut