Class: Oxidized::Model
- Inherits:
-
Object
show all
- Includes:
- Config::Vars
- Defined in:
- lib/oxidized/model/model.rb,
lib/oxidized/model/outputs.rb
Direct Known Subclasses
ACOS, ACSW, AEN, ALTEONOS, AOS, AOS7, AOSW, ARBOS, ASA, AWPlus, Adtran, Aireos, Airos, Alvarion, Apc_aos, AricentISS, AsyncOS, AudioCodes, AxOS, BR6910, Boss, C4CMTS, Cambium, Casa, Catos, CiscoNGA, CiscoSMA, CiscoSMB, ComnetMS, Comtrol, Comware, Coriant8600, CoriantGroove, CoriantTmos, Cumulus, DCNOS, DNOS, DataCom, DellX, Dlink, ECIapollo, EOS, EdgeCOS, EdgeSwitch, Edgeos, Enterasys, FTOS, FabricOS, FiberDriver, Firebrick, FirewareOS, FortiOS, FujitsuPY, GaiaOS, GcomBNPS, HPEBladeSystem, Hatteras, Hirschmann, HpeMsa, IOS, IOSXR, IPOS, ISAM, IronWare, JunOS, MLNXOS, MasterOS, Mtrlrfs, NDMS, NOS, NXOS, NetScaler, Netgear, Netonix, OneOS, OpenGear, OpenWrt, Openbsd, OpnSense, PanOS, PfSense, Planet, PowerConnect, Procurve, QuantaOS, RouterOS, SAOS, SGOS, SLXOS, SROS, ScreenOS, Siklu, StoneOS, TMOS, TPLink, Trango, UCS, VOLTAIRE, VRP, Viptela, Voss, Vyatta, WEOS, XOS, ZhoneOLT, ZyNOS, ZyNOSCLI
Defined Under Namespace
Classes: Outputs
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
#vars
Instance Attribute Details
Returns the value of attribute input.
100
101
102
|
# File 'lib/oxidized/model/model.rb', line 100
def input
@input
end
|
#node ⇒ Object
Returns the value of attribute node.
100
101
102
|
# File 'lib/oxidized/model/model.rb', line 100
def node
@node
end
|
Class Method Details
.cfg(*methods, **args, &block) ⇒ Object
28
29
30
31
32
|
# File 'lib/oxidized/model/model.rb', line 28
def cfg *methods, **args, &block
[methods].flatten.each do |method|
process_args_block(@cfg[method.to_s], args, block)
end
end
|
.cfgs ⇒ Object
34
35
36
|
# File 'lib/oxidized/model/model.rb', line 34
def cfgs
@cfg
end
|
.cmd(_cmd = nil, **args, &block) ⇒ Object
38
39
40
41
42
43
44
45
|
# File 'lib/oxidized/model/model.rb', line 38
def cmd _cmd = nil, **args, &block
if _cmd.class == Symbol
process_args_block(@cmd[_cmd], args, block)
else
process_args_block(@cmd[:cmd], args, [_cmd, block])
end
Oxidized.logger.debug "lib/oxidized/model/model.rb Added #{_cmd} to the commands list"
end
|
.cmds ⇒ Object
47
48
49
|
# File 'lib/oxidized/model/model.rb', line 47
def cmds
@cmd
end
|
18
19
20
21
22
|
# File 'lib/oxidized/model/model.rb', line 18
def = '# '
return @comment if @comment
@comment = block_given? ? yield :
end
|
.expect(re, **args, &block) ⇒ Object
51
52
53
|
# File 'lib/oxidized/model/model.rb', line 51
def expect re, **args, &block
process_args_block(@expect, args, [re, block])
end
|
.expects ⇒ Object
55
56
57
|
# File 'lib/oxidized/model/model.rb', line 55
def expects
@expect
end
|
.inherited(klass) ⇒ Object
9
10
11
12
13
14
15
16
|
# File 'lib/oxidized/model/model.rb', line 9
def inherited klass
klass.instance_variable_set '@cmd', Hash.new { |h, k| h[k] = [] }
klass.instance_variable_set '@cfg', Hash.new { |h, k| h[k] = [] }
klass.instance_variable_set '@procs', Hash.new { |h, k| h[k] = [] }
klass.instance_variable_set '@expect', []
klass.instance_variable_set '@comment', nil
klass.instance_variable_set '@prompt', nil
end
|
.post(**args) { ... } ⇒ void
This method returns an undefined value.
calls the block at the end of the model, adding the output of the block to the output string
77
78
79
|
# File 'lib/oxidized/model/model.rb', line 77
def post **args, &block
process_args_block(@procs[:post], args, block)
end
|
.pre(**args) { ... } ⇒ void
This method returns an undefined value.
calls the block at the end of the model, prepending the output of the block to the output string
66
67
68
|
# File 'lib/oxidized/model/model.rb', line 66
def pre **args, &block
process_args_block(@procs[:pre], args, block)
end
|
.procs ⇒ Hash
Returns hash proc procs :pre+:post to be prepended/postfixed to output.
84
85
86
|
# File 'lib/oxidized/model/model.rb', line 84
def procs
@procs
end
|
.prompt(_prompt = nil) ⇒ Object
24
25
26
|
# File 'lib/oxidized/model/model.rb', line 24
def prompt _prompt = nil
@prompt or @prompt = _prompt
end
|
Instance Method Details
#cfg ⇒ Object
132
133
134
|
# File 'lib/oxidized/model/model.rb', line 132
def cfg
self.class.cfgs
end
|
#cmd(string, &block) ⇒ Object
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
# File 'lib/oxidized/model/model.rb', line 102
def cmd string, &block
Oxidized.logger.debug "lib/oxidized/model/model.rb Executing #{string}"
out = @input.cmd(string)
return false unless out
out = out.b unless Oxidized.config.input.utf8_encoded?
self.class.cmds[:all].each do |all_block|
out = instance_exec Oxidized::String.new(out), string, &all_block
end
if vars :remove_secret
self.class.cmds[:secret].each do |all_block|
out = instance_exec Oxidized::String.new(out), string, &all_block
end
end
out = instance_exec Oxidized::String.new(out), &block if block
process_cmd_output out, string
end
|
172
173
174
175
176
177
178
|
# File 'lib/oxidized/model/model.rb', line 172
def
data = ''
.each_line do |line|
data << self.class. << line
end
data
end
|
#expect(re, &block) ⇒ Object
128
129
130
|
# File 'lib/oxidized/model/model.rb', line 128
def expect re, &block
self.class.expect re, &block
end
|
#expects(data) ⇒ Object
140
141
142
143
144
145
146
147
148
149
150
151
|
# File 'lib/oxidized/model/model.rb', line 140
def expects data
self.class.expects.each do |re, cb|
if data.match re
if cb.arity == 2
data = instance_exec [data, re], &cb
else
data = instance_exec data, &cb
end
end
end
data
end
|
#get ⇒ Object
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
|
# File 'lib/oxidized/model/model.rb', line 153
def get
Oxidized.logger.debug 'lib/oxidized/model/model.rb Collecting commands\' outputs'
outputs = Outputs.new
procs = self.class.procs
self.class.cmds[:cmd].each do |command, block|
out = cmd command, &block
return false unless out
outputs << out
end
procs[:pre].each do |pre_proc|
outputs.unshift process_cmd_output(instance_eval(&pre_proc), '')
end
procs[:post].each do |post_proc|
outputs << process_cmd_output(instance_eval(&post_proc), '')
end
outputs
end
|
#output ⇒ Object
120
121
122
|
# File 'lib/oxidized/model/model.rb', line 120
def output
@input.output
end
|
#prompt ⇒ Object
136
137
138
|
# File 'lib/oxidized/model/model.rb', line 136
def prompt
self.class.prompt
end
|
#screenscrape ⇒ Object
180
181
182
|
# File 'lib/oxidized/model/model.rb', line 180
def screenscrape
@input.class.to_s.match(/Telnet/) || vars(:ssh_no_exec)
end
|
#send(data) ⇒ Object
124
125
126
|
# File 'lib/oxidized/model/model.rb', line 124
def send data
@input.send data
end
|