zabcon 0.0.6 → 0.0.327
Sign up to get free protection for your applications and to get access to all the features.
- data/libs/argument_processor.rb +430 -567
- data/libs/command_help.rb +11 -61
- data/libs/command_tree.rb +480 -280
- data/libs/lexer.rb +846 -0
- data/libs/printer.rb +25 -25
- data/libs/revision.rb +1 -0
- data/libs/utility_items.rb +137 -0
- data/libs/zabbix_server.rb +379 -0
- data/libs/zabcon_commands.rb +558 -0
- data/libs/zabcon_core.rb +177 -316
- data/libs/zabcon_exceptions.rb +4 -4
- data/libs/zabcon_globals.rb +29 -6
- data/zabcon.conf.default +38 -3
- data/zabcon.rb +72 -50
- metadata +23 -48
- data/libs/zbxcliserver.rb +0 -325
data/libs/zabcon_core.rb
CHANGED
@@ -20,65 +20,70 @@
|
|
20
20
|
|
21
21
|
##########################################
|
22
22
|
# Subversion information
|
23
|
-
# $Id: $
|
24
|
-
# $Revision:
|
23
|
+
# $Id: zabcon_core.rb 325 2011-09-26 08:57:00Z nelsonab $
|
24
|
+
# $Revision: 325 $
|
25
25
|
##########################################
|
26
26
|
|
27
|
+
require 'libs/utility_items'
|
28
|
+
require 'libs/revision'
|
27
29
|
require 'parseconfig'
|
28
30
|
require 'ostruct'
|
29
31
|
require 'rexml/document'
|
30
|
-
require 'libs/
|
32
|
+
require 'libs/zabbix_server'
|
31
33
|
require 'libs/printer'
|
32
|
-
require '
|
34
|
+
require 'zbxapi/zdebug'
|
33
35
|
require 'libs/input'
|
34
36
|
#require 'libs/defines'
|
35
37
|
require 'libs/command_tree'
|
36
|
-
require 'libs/argument_processor'
|
38
|
+
#require 'libs/argument_processor'
|
37
39
|
require 'libs/command_help'
|
38
40
|
require 'libs/zabcon_globals'
|
41
|
+
require 'libs/zabcon_commands'
|
42
|
+
|
39
43
|
|
40
44
|
|
41
45
|
class ZabconCore
|
42
46
|
|
43
47
|
include ZDebug
|
44
48
|
|
45
|
-
def initialize()
|
46
|
-
@env = EnvVars.instance # make it easier to call the global EnvVars singleton
|
47
49
|
|
50
|
+
def initialize()
|
48
51
|
# This must be set first or the debug module will throw an error
|
49
|
-
set_debug_level(
|
52
|
+
set_debug_level(env["debug"])
|
50
53
|
|
51
|
-
|
52
|
-
|
54
|
+
env.register_notifier("debug",self.method(:set_debug_level))
|
55
|
+
env.register_notifier("api_debug",self.method(:set_debug_api_level))
|
53
56
|
|
54
|
-
@server = nil
|
55
|
-
@callbacks={}
|
56
57
|
@printer=OutputPrinter.new
|
57
|
-
|
58
|
-
@
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
58
|
+
debug(5,:msg=>"Setting up help")
|
59
|
+
# @cmd_help=CommandHelp.new("english") # Setup help functions, determine default language to use
|
60
|
+
CommandHelp.setup("english")
|
61
|
+
|
62
|
+
#TODO Remove reference to ArgumentProcessor when new command objects in use
|
63
|
+
debug(5,:msg=>"Setting up ArgumentProcessor")
|
64
|
+
# @arg_processor=ArgumentProcessor.new # Need to instantiate for debug routines
|
65
|
+
|
66
|
+
if !env["server"].nil? and !env["username"].nil? and !env["password"].nil? then
|
67
|
+
puts "Found valid login credentials, attempting login" if env["echo"]
|
66
68
|
begin
|
67
|
-
|
69
|
+
ZabbixServer.instance.login
|
70
|
+
|
71
|
+
rescue ZbxAPI_ExceptionBadAuth => e
|
72
|
+
puts e.message
|
68
73
|
rescue ZbxAPI_ExceptionLoginPermission
|
69
74
|
puts "Error Invalid login or no API permissions."
|
70
75
|
end
|
71
76
|
end
|
72
77
|
|
73
|
-
debug(5
|
78
|
+
debug(5,:msg=>"Setting up prompt")
|
74
79
|
@debug_prompt=false
|
75
|
-
if
|
80
|
+
if env["have_tty"]
|
76
81
|
prc=Proc.new do
|
77
82
|
debug_part = @debug_prompt ? " #{debug_level}" : ""
|
78
|
-
if
|
83
|
+
if !ZabbixServer.instance.connected?
|
79
84
|
" #{debug_part}-> "
|
80
85
|
else
|
81
|
-
|
86
|
+
ZabbixServer.instance.loggedin? ? " #{debug_part}+> " : " #{debug_part}-> "
|
82
87
|
end
|
83
88
|
end
|
84
89
|
@input=Readline_Input.new
|
@@ -86,160 +91,117 @@ class ZabconCore
|
|
86
91
|
else
|
87
92
|
@input=STDIN_Input.new
|
88
93
|
end
|
89
|
-
debug(5,"Setup complete")
|
90
|
-
end
|
91
94
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
no_args=nil
|
101
|
-
no_help=nil
|
102
|
-
no_verify=nil
|
103
|
-
|
104
|
-
login_required = lambda {
|
105
|
-
debug(6,"Lambda 'login_required'")
|
106
|
-
puts "Login required"
|
107
|
-
}
|
108
|
-
|
109
|
-
# parameters for insert: insert_path, command, commandproc, arguments=[], helpproc=nil, verify_func=nil, options
|
110
|
-
|
111
|
-
# These commands do not require a valid login
|
112
|
-
@commands.insert ["quit"], :exit
|
113
|
-
@commands.insert ["exit"], :exit
|
114
|
-
@commands.insert ["help"], :help,no_args,no_help,@arg_processor.help, :suppress_printer
|
115
|
-
|
116
|
-
@commands.insert ["hisotry"], self.method(:do_history),no_args,no_help,no_verify,:suppress_printer
|
117
|
-
@commands.insert ["info"], self.method(:do_info),no_args,no_help,no_verify,:suppress_printer
|
118
|
-
@commands.insert ["load"], no_cmd,no_args,no_help,no_verify,:suppress_printer
|
119
|
-
@commands.insert ["login"], self.method(:do_login),nil,nil,@arg_processor.method(:login), :suppress_printer
|
120
|
-
@commands.insert ["load","config"], @env.method(:load_config),no_args,no_help,no_verify,:suppress_printer
|
121
|
-
@commands.insert ["set","debug"], self.method(:set_debug),no_args,no_help,no_verify,:suppress_printer
|
122
|
-
@commands.insert ["set","lines"], self.method(:set_lines),no_args,no_help,no_verify,:suppress_printer
|
123
|
-
@commands.insert ["set","pause"], self.method(:set_pause),no_args,no_help,no_verify,:suppress_printer
|
124
|
-
@commands.insert ["set","var"], self.method(:set_var), no_args, no_help, @arg_processor.method(:simple_processor),:suppress_printer
|
125
|
-
@commands.insert ["set","env"], self.method(:set_env), no_args, no_help, @arg_processor.method(:simple_processor), :suppress_printer
|
126
|
-
@commands.insert ["show","var"], self.method(:show_var), no_args, no_help, @arg_processor.default, :use_array_processor, :suppress_printer
|
127
|
-
@commands.insert ["show","env"], self.method(:show_env), no_args, no_help, @arg_processor.default, :use_array_processor, :suppress_printer
|
128
|
-
@commands.insert ["unset","var"], self.method(:unset_var), no_args, no_help, @arg_processor.default, :use_array_processor, :suppress_printer
|
129
|
-
|
130
|
-
|
131
|
-
if loggedin then
|
132
|
-
debug(5,"Inserting commands which require login")
|
133
|
-
# This command tree is for a valid login
|
134
|
-
@commands.insert ["get"], no_cmd, no_args, @cmd_help.method(:get)
|
135
|
-
#Import commented out until fixed
|
136
|
-
#@commands.insert ["import"], self.method(:do_import),no_args,@cmd_help.method(:import),@arg_processor.default,:not_empty, :use_array_processor, :num_args=>"==1"
|
137
|
-
|
138
|
-
@commands.insert ["add","app"], @server.method(:addapp),no_args,no_help,no_verify
|
139
|
-
@commands.insert ["add","app","id"], @server.method(:getappid),no_args,no_help,no_verify
|
140
|
-
@commands.insert ["add","host"], @server.method(:addhost), no_args, @cmd_help.method(:add_host), @arg_processor.method(:add_host), :server => @server
|
141
|
-
@commands.insert ["add","host","group"], @server.method(:addhostgroup),no_args,no_help,no_verify
|
142
|
-
@commands.insert ["add","item"], @server.method(:additem), no_args, @cmd_help.method(:add_item), @arg_processor.method(:add_item)
|
143
|
-
@commands.insert ["add","link"], @server.method(:addlink),no_args,no_help,no_verify
|
144
|
-
@commands.insert ["add","link","trigger"], @server.method(:addlinktrigger),no_args,no_help,no_verify
|
145
|
-
@commands.insert ["add","sysmap"], @server.method(:addsysmap),no_args,no_help,no_verify
|
146
|
-
@commands.insert ["add","sysmap","element"], @server.method(:addelementtosysmap),no_args,no_help,no_verify
|
147
|
-
@commands.insert ["add","trigger"], @server.method(:addtrigger),no_args,no_help,no_verify
|
148
|
-
@commands.insert ["add","user"], @server.method(:adduser), no_args, @cmd_help.method(:add_user), @arg_processor.method(:add_user)
|
149
|
-
@commands.insert ["add","user","media"], @server.method(:addusermedia),no_args,@cmd_help.method(:add_user_media),no_verify
|
150
|
-
|
151
|
-
@commands.insert ["get","app"], @server.method(:getapp), no_args, no_help, @arg_processor.default_get
|
152
|
-
@commands.insert ["get","host"], @server.method(:gethost), no_args, no_help, @arg_processor.default_get
|
153
|
-
@commands.insert ["get","host","group"], @server.method(:gethostgroup), no_args, no_help, @arg_processor.default_get
|
154
|
-
@commands.insert ["get","host","group","id"], @server.method(:gethostgroupid), no_args, no_help, @arg_processor.method(:get_group_id)
|
155
|
-
@commands.insert ["get","item"], @server.method(:getitem),
|
156
|
-
['itemids','hostids','groupids', 'triggerids','applicationids','status','templated_items','editable','count','pattern','limit','order', 'show'],
|
157
|
-
@cmd_help.method(:get_item), @arg_processor.default_get
|
158
|
-
@commands.insert ["get","seid"], @server.method(:getseid), no_args, no_help, @arg_processor.default_get
|
159
|
-
@commands.insert ["get","trigger"], @server.method(:gettrigger), no_args, no_help, @arg_processor.default_get
|
160
|
-
@commands.insert ["get","user"], @server.method(:getuser),['show'], @cmd_help.method(:get_user), @arg_processor.method(:get_user)
|
161
|
-
|
162
|
-
@commands.insert ["delete","user"], @server.method(:deleteuser), ['id'], @cmd_help.method(:delete_user), @arg_processor.method(:delete_user)
|
163
|
-
@commands.insert ["delete","host"], @server.method(:deletehost), no_args, @cmd_help.method(:delete_host), @arg_processor.method(:delete_host)
|
164
|
-
@commands.insert ["delete","item"], @server.method(:deleteitem), ['itemid'], @cmd_help.method(:delete_item), @arg_processor.default
|
165
|
-
|
166
|
-
@commands.insert ["raw","api"], @server.method(:raw_api), no_args, @cmd_help.method(:raw_api), @arg_processor.method(:raw_api)
|
167
|
-
@commands.insert ["raw","json"], @server.method(:raw_json), no_args, @cmd_help.method(:raw_json), @arg_processor.method(:raw_processor)
|
168
|
-
|
169
|
-
@commands.insert ["update","user"], @server.method(:updateuser), no_args, no_help, no_verify
|
95
|
+
###############################################################################
|
96
|
+
###############################################################################
|
97
|
+
zabconcore=self
|
98
|
+
if @input.respond_to?(:history)
|
99
|
+
ZabconCommand.add_command "history" do
|
100
|
+
set_method do zabconcore.show_history end
|
101
|
+
set_help_tag :history
|
102
|
+
end
|
170
103
|
else
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
@commands.insert ["delete","host"], login_required, no_args, @cmd_help.method(:delete_host)
|
197
|
-
|
198
|
-
@commands.insert ["update","user"], login_required, no_args, no_help
|
104
|
+
ZabconCommand.add_command "history" do
|
105
|
+
set_method do puts "History is not supported by your version of Ruby and ReadLine" end
|
106
|
+
set_help_tag :history
|
107
|
+
end
|
108
|
+
end
|
109
|
+
###############################################################################
|
110
|
+
###############################################################################
|
111
|
+
|
112
|
+
debug(5,:msg=>"Setting up custom commands")
|
113
|
+
|
114
|
+
if !env["custom_commands"].nil?
|
115
|
+
filename=nil
|
116
|
+
cmd_file=env["custom_commands"]
|
117
|
+
filename=File.exist?(cmd_file) && cmd_file
|
118
|
+
cmd_file=File::expand_path("~/#{env["custom_commands"]}")
|
119
|
+
filename=File.exist?(cmd_file) && cmd_file if filename.class!=String
|
120
|
+
if filename.class==String
|
121
|
+
puts "Loading custom commands from #{filename}" if env["echo"]
|
122
|
+
begin
|
123
|
+
load filename
|
124
|
+
rescue Exception=> e
|
125
|
+
puts "There was an error loading your custom commands"
|
126
|
+
p e
|
127
|
+
end
|
128
|
+
end
|
199
129
|
end
|
130
|
+
|
131
|
+
debug(5,:msg=>"Setup complete")
|
200
132
|
end
|
201
133
|
|
134
|
+
# #TODO The following method may need to be removed when new command object in use
|
135
|
+
# # Argument logged in is used to determine which set of commands to load. If loggedin is true then commands which
|
136
|
+
# # require a valid login are loaded
|
137
|
+
# def setupcommands(loggedin)
|
138
|
+
# debug(5,loggedin,"Starting setupcommands (loggedin)")
|
139
|
+
#
|
140
|
+
#
|
141
|
+
## no_cmd=nil
|
142
|
+
## no_args=nil
|
143
|
+
## no_help=nil
|
144
|
+
## no_verify=nil
|
145
|
+
#
|
146
|
+
# login_required = lambda {
|
147
|
+
# debug(6,"Lambda 'login_required'")
|
148
|
+
# puts "Login required"
|
149
|
+
# }
|
150
|
+
#
|
151
|
+
# # parameters for insert: insert_path, command, commandproc, arguments=[], helpproc=nil, verify_func=nil, options
|
152
|
+
#
|
153
|
+
# #Import commented out until fixed
|
154
|
+
# #@commands.insert ["import"], self.method(:do_import),no_args,@cmd_help.method(:import),@arg_processor.default,:not_empty, :use_array_processor, :num_args=>"==1"
|
155
|
+
#
|
156
|
+
# @commands.insert ["add","app","id"], @server.method(:getappid),no_args,no_help,no_verify
|
157
|
+
# @commands.insert ["add","link"], @server.method(:addlink),no_args,no_help,no_verify
|
158
|
+
# @commands.insert ["add","link","trigger"], @server.method(:addlinktrigger),no_args,no_help,no_verify
|
159
|
+
# @commands.insert ["add","sysmap"], @server.method(:addsysmap),no_args,no_help,no_verify
|
160
|
+
# @commands.insert ["add","sysmap","element"], @server.method(:addelementtosysmap),no_args,no_help,no_verify
|
161
|
+
# @commands.insert ["add","user","media"], @server.method(:addusermedia),no_args,@cmd_help.method(:add_user_media),no_verify
|
162
|
+
#
|
163
|
+
# @commands.insert ["get","host","group","id"], @server.method(:gethostgroupid), no_args, no_help, @arg_processor.method(:get_group_id)
|
164
|
+
# @commands.insert ["get","seid"], @server.method(:getseid), no_args, no_help, @arg_processor.default_get
|
165
|
+
|
202
166
|
def start
|
203
|
-
debug(5
|
204
|
-
puts "Welcome to Zabcon." if
|
205
|
-
puts "Use the command 'help' to get help on commands" if
|
167
|
+
debug(5,:msg=>"Entering main zabcon start routine")
|
168
|
+
puts "Welcome to Zabcon. Build Number: #{REVISION}" if env["echo"]
|
169
|
+
puts "Use the command 'help' to get help on commands" if env["have_tty"] || env["echo"]
|
206
170
|
|
207
|
-
setupcommands(!@server.nil?) # If we don't have a valid server we're not logged in'
|
208
171
|
begin
|
209
|
-
|
210
|
-
line=@
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
end
|
234
|
-
end # case
|
235
|
-
|
236
|
-
end # while
|
172
|
+
catch(:exit) do
|
173
|
+
while line=@input.get_line()
|
174
|
+
line=line.strip_comments
|
175
|
+
next if line.nil?
|
176
|
+
next if line.strip.length==0 # don't bother parsing an empty line'
|
177
|
+
debug(6, :var=>line, :msg=>"Input from user")
|
178
|
+
|
179
|
+
commands=ZabconExecuteContainer.new(line)
|
180
|
+
debug(8,:var=>commands,:msg=>"Commands tree")
|
181
|
+
|
182
|
+
commands.execute
|
183
|
+
@printer.print(commands.results,commands.show_params) if commands.print?
|
184
|
+
|
185
|
+
end # while
|
186
|
+
end #end catch
|
187
|
+
rescue CommandList::InvalidCommand => e
|
188
|
+
puts e.message
|
189
|
+
retry
|
190
|
+
rescue Command::ParameterError => e
|
191
|
+
puts e.message
|
192
|
+
retry
|
193
|
+
rescue ZabbixServer::ConnectionProblem => e
|
194
|
+
puts e.message
|
195
|
+
retry
|
237
196
|
rescue ParseError => e #catch the base exception class
|
238
197
|
e.show_message
|
239
198
|
retry if e.retry?
|
240
199
|
rescue ZbxAPI_ExceptionVersion => e
|
241
200
|
puts e
|
242
201
|
retry # We will allow for graceful recover from Version exceptions
|
202
|
+
rescue ZbxAPI_ExceptionBadAuth => e
|
203
|
+
puts e.message
|
204
|
+
retry
|
243
205
|
rescue ZbxAPI_ExceptionLoginPermission
|
244
206
|
puts "No login permissions"
|
245
207
|
retry
|
@@ -255,7 +217,6 @@ class ZabconCore
|
|
255
217
|
retry
|
256
218
|
else
|
257
219
|
e.show_message
|
258
|
-
# ddputs "Error: #{e.message}"
|
259
220
|
retry if e.retry?
|
260
221
|
end
|
261
222
|
rescue ZError => e
|
@@ -266,29 +227,37 @@ class ZabconCore
|
|
266
227
|
puts "A fatal error occurred."
|
267
228
|
end
|
268
229
|
e.show_message
|
269
|
-
# e.show_backtrace
|
270
230
|
retry if e.retry?
|
271
231
|
end #end of exception block
|
272
232
|
end # def
|
273
233
|
|
274
234
|
def getprompt
|
275
235
|
debug_part = @debug_prompt ? " #{debug_level}" : ""
|
276
|
-
if @server.nil?
|
277
|
-
return " #{debug_part}-> "
|
278
|
-
end
|
279
|
-
return @server.login? ? " #{debug_part}+> " : " #{debug_part}-> "
|
280
|
-
end
|
281
236
|
|
282
|
-
|
283
|
-
|
284
|
-
history.each_index do |index|
|
285
|
-
puts "#{index}: #{history[index]}"
|
286
|
-
end
|
237
|
+
return " #{debug_part}-> " if @server.nil?
|
238
|
+
@server.login? ? " #{debug_part}+> " : " #{debug_part}-> "
|
287
239
|
end
|
288
240
|
|
289
|
-
|
290
|
-
|
291
|
-
|
241
|
+
# def set_lines(input)
|
242
|
+
# @printer.sheight=input.keys[0].to_i
|
243
|
+
# end
|
244
|
+
|
245
|
+
# def set_pause(input)
|
246
|
+
# if input.nil? then
|
247
|
+
# puts "set pause requires either Off or On"
|
248
|
+
# return
|
249
|
+
# end
|
250
|
+
#
|
251
|
+
# if input.keys[0].upcase=="OFF"
|
252
|
+
# @printer.sheight=@printer.sheight.abs*(-1)
|
253
|
+
# elsif input.keys[0].upcase=="ON"
|
254
|
+
# @printer.sheight=@printer.sheight.abs
|
255
|
+
# else
|
256
|
+
# puts "set pause requires either Off or On"
|
257
|
+
# end
|
258
|
+
# @printer.sheight = 24 if @printer.sheight==0
|
259
|
+
# end
|
260
|
+
|
292
261
|
def set_debug(input)
|
293
262
|
if input["prompt"].nil? then
|
294
263
|
puts "This command is deprecated, please use \"set env debug=n\""
|
@@ -303,146 +272,34 @@ class ZabconCore
|
|
303
272
|
set_facility_debug_level(:api,value)
|
304
273
|
end
|
305
274
|
|
306
|
-
def
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
input.each {|key,val|
|
329
|
-
GlobalVars.instance[key]=val
|
330
|
-
puts "#{key} : #{val.inspect}"
|
331
|
-
}
|
332
|
-
end
|
333
|
-
|
334
|
-
def show_var(input)
|
335
|
-
if input.empty?
|
336
|
-
if GlobalVars.instance.empty?
|
337
|
-
puts "No variables defined"
|
338
|
-
else
|
339
|
-
GlobalVars.instance.each { |key,val|
|
340
|
-
puts "#{key} : #{val.inspect}"
|
341
|
-
}
|
342
|
-
end
|
343
|
-
else
|
344
|
-
input.each { |item|
|
345
|
-
if GlobalVars.instance[item].nil?
|
346
|
-
puts "#{item} *** Not Defined ***"
|
347
|
-
else
|
348
|
-
puts "#{item} : #{GlobalVars.instance[item].inspect}"
|
349
|
-
end
|
350
|
-
}
|
351
|
-
end
|
352
|
-
end
|
353
|
-
|
354
|
-
def unset_var(input)
|
355
|
-
if input.empty?
|
356
|
-
puts "No variables given to unset"
|
357
|
-
else
|
358
|
-
input.each {|item|
|
359
|
-
if GlobalVars.instance[item].nil?
|
360
|
-
puts "#{item} *** Not Defined ***"
|
361
|
-
else
|
362
|
-
GlobalVars.instance.delete(item)
|
363
|
-
puts "#{item} Deleted"
|
364
|
-
end
|
365
|
-
}
|
366
|
-
end
|
367
|
-
end
|
368
|
-
|
369
|
-
def set_env(input)
|
370
|
-
input.each{|key,val|
|
371
|
-
@env[key]=val
|
372
|
-
puts "#{key} : #{val.inspect}"
|
373
|
-
}
|
374
|
-
end
|
375
|
-
|
376
|
-
def show_env(input)
|
377
|
-
if input.empty?
|
378
|
-
if @env.empty?
|
379
|
-
puts "No variables defined"
|
380
|
-
else
|
381
|
-
@env.each { |key,val|
|
382
|
-
puts "#{key} : #{val.inspect}"
|
383
|
-
}
|
384
|
-
end
|
385
|
-
else
|
386
|
-
input.each { |item|
|
387
|
-
if @env[item].nil?
|
388
|
-
puts "#{item} *** Not Defined ***"
|
389
|
-
else
|
390
|
-
puts "#{item} : #{@env[item].inspect}"
|
391
|
-
end
|
392
|
-
}
|
393
|
-
end
|
394
|
-
end
|
395
|
-
|
396
|
-
# Load a configuration stored in a file
|
397
|
-
# many things can be passed in
|
398
|
-
# 1) an OpenStruct list of command line parameters which will overload the parameters
|
399
|
-
# stored in the file
|
400
|
-
# 2) A Hash with a key :filename
|
401
|
-
# 3) If nil or empty the class variable @conffile will be used
|
402
|
-
|
403
|
-
def do_login(params)
|
404
|
-
url = params[:server]
|
405
|
-
username = params[:username]
|
406
|
-
password = params[:password]
|
407
|
-
|
408
|
-
begin
|
409
|
-
@server = ZbxCliServer.new(url,username,password,debug_level)
|
410
|
-
puts "#{url} connected" if @env["echo"]
|
411
|
-
puts "API Version: #{@server.version}" if @env["echo"]
|
412
|
-
|
413
|
-
setupcommands(true)
|
414
|
-
return true
|
415
|
-
rescue ZbxAPI_ExceptionBadAuth
|
416
|
-
puts "Login error, incorrect login information"
|
417
|
-
puts "Server: #{url} User: #{username} password: #{password}" # will need to remove password in later versions
|
418
|
-
return false
|
419
|
-
rescue ZbxAPI_ExceptionBadServerUrl
|
420
|
-
puts "Login error, unable to connect to host or bad host name: '#{url}'"
|
421
|
-
# rescue ZbxAPI_ExceptionConnectionRefused
|
422
|
-
# puts "Server refused connection, is url correct?"
|
423
|
-
end
|
424
|
-
end
|
425
|
-
|
426
|
-
def do_info(input)
|
427
|
-
puts "Current settings"
|
428
|
-
puts "Server"
|
429
|
-
if @server.nil?
|
430
|
-
puts "Not connected"
|
431
|
-
else
|
432
|
-
puts " Server Name: %s" % @server.server_url
|
433
|
-
puts " Username: %-15s Password: %-12s" % [@server.user, Array.new(@server.password.length,'*')]
|
434
|
-
end
|
435
|
-
puts "Display"
|
436
|
-
puts " Current screen length #{@env["sheight"]}"
|
437
|
-
puts "Other"
|
438
|
-
puts " Debug level %d" % @env["debug"]
|
439
|
-
end
|
275
|
+
# def set_var(input)
|
276
|
+
# debug(6,input)
|
277
|
+
# input.each {|key,val|
|
278
|
+
# GlobalVars.instance[key]=val
|
279
|
+
# puts "#{key} : #{val.inspect}"
|
280
|
+
# }
|
281
|
+
# end
|
282
|
+
|
283
|
+
# def unset_var(input)
|
284
|
+
# if input.empty?
|
285
|
+
# puts "No variables given to unset"
|
286
|
+
# else
|
287
|
+
# input.each {|item|
|
288
|
+
# if GlobalVars.instance[item].nil?
|
289
|
+
# puts "#{item} *** Not Defined ***"
|
290
|
+
# else
|
291
|
+
# GlobalVars.instance.delete(item)
|
292
|
+
# puts "#{item} Deleted"
|
293
|
+
# end
|
294
|
+
# }
|
295
|
+
# end
|
296
|
+
# end
|
440
297
|
|
441
298
|
#
|
442
299
|
# Import config from an XML file:
|
443
300
|
#
|
444
301
|
def do_import(input)
|
445
|
-
debug(5
|
302
|
+
debug(5,:var=>input,:msg=>"args")
|
446
303
|
|
447
304
|
input=input[0]
|
448
305
|
|
@@ -725,5 +582,9 @@ class ZabconCore
|
|
725
582
|
|
726
583
|
end # end do_import
|
727
584
|
|
585
|
+
###############################################################################
|
586
|
+
###############################################################################
|
587
|
+
|
588
|
+
|
728
589
|
end #end class
|
729
590
|
|
data/libs/zabcon_exceptions.rb
CHANGED
@@ -18,8 +18,8 @@
|
|
18
18
|
|
19
19
|
##########################################
|
20
20
|
# Subversion information
|
21
|
-
# $Id: zabcon_exceptions.rb
|
22
|
-
# $Revision:
|
21
|
+
# $Id: zabcon_exceptions.rb 325 2011-09-26 08:57:00Z nelsonab $
|
22
|
+
# $Revision: 325 $
|
23
23
|
##########################################
|
24
24
|
|
25
25
|
#------------------------------------------------------------------------------
|
@@ -30,8 +30,8 @@
|
|
30
30
|
#
|
31
31
|
#------------------------------------------------------------------------------
|
32
32
|
|
33
|
-
require '
|
34
|
-
require '
|
33
|
+
require 'zbxapi/zdebug'
|
34
|
+
require 'zbxapi/exceptions'
|
35
35
|
|
36
36
|
#---------------------------------------------------------
|
37
37
|
#These general exceptions are only used internally and are
|