lib/zabbix-ruby-client/cli.rb
require "thor"
require "zabbix-ruby-client"
module ZabbixRubyClient
class Cli < Thor
include Thor::Actions
def self.source_root
File.expand_path("../../../templates", __FILE__)
end
default_task :help
class_option :configfile,
aliases: "-c",
banner: "PATH",
default: File.expand_path("config.yml", Dir.pwd),
desc: "Path to the configuration file to use"
class_option :taskfile,
aliases: "-t",
banner: "PATH",
default: File.expand_path("minutely.yml", Dir.pwd),
desc: "Path to the list of plugins to execute"
desc "init", "Initialize a new zabbix ruby client"
def init(name = "zabbix-ruby-client")
directory "client", name
end
desc "show", "Displays in console what are the collected data ready to be sent"
def show
collect(options).show
end
desc "upload", "Collects and sends data to the zabbix server"
def upload
collect(options).upload
end
no_commands do
def collect(options)
config = YAML::load_file(options[:configfile])
if File.exists? options[:taskfile]
tasks = YAML::load_file(options[:taskfile])
else
tasks = config['plugins']
end
config['server'] = File.basename(options[:configfile],'.yml')
config['taskfile'] = File.basename(options[:taskfile],'.yml')
zrc = ZabbixRubyClient::Runner.new(config, tasks)
zrc.collect
zrc
end
end
end
end