oxidized 0.21.0 → 0.22.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (170) hide show
  1. checksums.yaml +5 -5
  2. data/.github/no-response.yml +13 -0
  3. data/.gitignore +3 -0
  4. data/.rubocop.yml +37 -0
  5. data/.rubocop_todo.yml +714 -0
  6. data/.travis.yml +7 -1
  7. data/CHANGELOG.md +341 -243
  8. data/Dockerfile +44 -16
  9. data/LICENSE +201 -0
  10. data/README.md +114 -82
  11. data/Rakefile +19 -0
  12. data/TODO.md +29 -23
  13. data/bin/oxidized +1 -2
  14. data/docs/Configuration.md +71 -31
  15. data/docs/Creating-Models.md +78 -0
  16. data/docs/Hooks.md +145 -41
  17. data/docs/Model-Notes/AireOS.md +12 -0
  18. data/docs/Model-Notes/ArbOS.md +12 -0
  19. data/docs/Model-Notes/Comware.md +14 -0
  20. data/docs/Model-Notes/EOS.md +9 -0
  21. data/docs/Model-Notes/JunOS.md +34 -0
  22. data/docs/Model-Notes/Netgear.md +68 -0
  23. data/docs/Model-Notes/README.md +19 -0
  24. data/docs/{VRP-Huawei.md → Model-Notes/VRP-Huawei.md} +10 -2
  25. data/docs/Model-Notes/XGS4600-Zyxel.md +39 -0
  26. data/docs/Outputs.md +27 -28
  27. data/docs/Ruby-API.md +38 -18
  28. data/docs/Sources.md +78 -16
  29. data/docs/Supported-OS-Types.md +171 -148
  30. data/extra/oxidized.logrotate +7 -0
  31. data/extra/oxidized.service +1 -1
  32. data/extra/rest_client.rb +4 -5
  33. data/extra/syslog.rb +16 -16
  34. data/lib/oxidized/cli.rb +3 -3
  35. data/lib/oxidized/config.rb +7 -4
  36. data/lib/oxidized/core.rb +3 -3
  37. data/lib/oxidized/hook.rb +64 -65
  38. data/lib/oxidized/hook/awssns.rb +2 -3
  39. data/lib/oxidized/hook/ciscosparkdiff.rb +49 -0
  40. data/lib/oxidized/hook/exec.rb +5 -5
  41. data/lib/oxidized/hook/githubrepo.rb +20 -14
  42. data/lib/oxidized/hook/slackdiff.rb +38 -19
  43. data/lib/oxidized/hook/xmppdiff.rb +58 -0
  44. data/lib/oxidized/input/cli.rb +5 -6
  45. data/lib/oxidized/input/ftp.rb +8 -7
  46. data/lib/oxidized/input/http.rb +39 -0
  47. data/lib/oxidized/input/ssh.rb +24 -22
  48. data/lib/oxidized/input/telnet.rb +38 -32
  49. data/lib/oxidized/jobs.rb +3 -4
  50. data/lib/oxidized/manager.rb +9 -4
  51. data/lib/oxidized/model/acos.rb +15 -16
  52. data/lib/oxidized/model/acsw.rb +3 -8
  53. data/lib/oxidized/model/aen.rb +1 -2
  54. data/lib/oxidized/model/aireos.rb +3 -5
  55. data/lib/oxidized/model/alteonos.rb +16 -18
  56. data/lib/oxidized/model/alvarion.rb +0 -4
  57. data/lib/oxidized/model/aos.rb +2 -4
  58. data/lib/oxidized/model/aos7.rb +2 -3
  59. data/lib/oxidized/model/aosw.rb +13 -15
  60. data/lib/oxidized/model/apc_aos.rb +0 -3
  61. data/lib/oxidized/model/arbos.rb +26 -0
  62. data/lib/oxidized/model/aricentiss.rb +51 -0
  63. data/lib/oxidized/model/asa.rb +33 -35
  64. data/lib/oxidized/model/asyncos.rb +41 -44
  65. data/lib/oxidized/model/audiocodes.rb +4 -8
  66. data/lib/oxidized/model/awplus.rb +84 -0
  67. data/lib/oxidized/model/boss.rb +6 -5
  68. data/lib/oxidized/model/br6910.rb +43 -45
  69. data/lib/oxidized/model/c4cmts.rb +3 -5
  70. data/lib/oxidized/model/cambium.rb +22 -0
  71. data/lib/oxidized/model/catos.rb +0 -2
  72. data/lib/oxidized/model/cisconga.rb +1 -3
  73. data/lib/oxidized/model/ciscosma.rb +37 -40
  74. data/lib/oxidized/model/ciscosmb.rb +7 -4
  75. data/lib/oxidized/model/comnetms.rb +43 -0
  76. data/lib/oxidized/model/comware.rb +9 -9
  77. data/lib/oxidized/model/coriant8600.rb +3 -5
  78. data/lib/oxidized/model/coriantgroove.rb +3 -5
  79. data/lib/oxidized/model/corianttmos.rb +1 -3
  80. data/lib/oxidized/model/cumulus.rb +26 -32
  81. data/lib/oxidized/model/datacom.rb +0 -2
  82. data/lib/oxidized/model/dcnos.rb +46 -0
  83. data/lib/oxidized/model/dlink.rb +1 -1
  84. data/lib/oxidized/model/dnos.rb +9 -5
  85. data/lib/oxidized/model/edgecos.rb +45 -0
  86. data/lib/oxidized/model/edgeos.rb +5 -3
  87. data/lib/oxidized/model/edgeswitch.rb +1 -3
  88. data/lib/oxidized/model/enterasys.rb +1 -3
  89. data/lib/oxidized/model/eos.rb +6 -8
  90. data/lib/oxidized/model/fabricos.rb +3 -5
  91. data/lib/oxidized/model/firewareos.rb +2 -5
  92. data/lib/oxidized/model/fortios.rb +21 -17
  93. data/lib/oxidized/model/ftos.rb +2 -4
  94. data/lib/oxidized/model/fujitsupy.rb +2 -4
  95. data/lib/oxidized/model/gaiaos.rb +6 -10
  96. data/lib/oxidized/model/gcombnps.rb +82 -0
  97. data/lib/oxidized/model/hatteras.rb +8 -5
  98. data/lib/oxidized/model/hirschmann.rb +8 -10
  99. data/lib/oxidized/model/hpebladesystem.rb +19 -17
  100. data/lib/oxidized/model/hpemsa.rb +0 -3
  101. data/lib/oxidized/model/ios.rb +54 -55
  102. data/lib/oxidized/model/iosxe.rb +5 -0
  103. data/lib/oxidized/model/iosxr.rb +1 -3
  104. data/lib/oxidized/model/ipos.rb +1 -3
  105. data/lib/oxidized/model/ironware.rb +12 -15
  106. data/lib/oxidized/model/isam.rb +4 -5
  107. data/lib/oxidized/model/junos.rb +8 -7
  108. data/lib/oxidized/model/masteros.rb +1 -3
  109. data/lib/oxidized/model/mlnxos.rb +3 -4
  110. data/lib/oxidized/model/model.rb +15 -7
  111. data/lib/oxidized/model/mtrlrfs.rb +1 -4
  112. data/lib/oxidized/model/ndms.rb +24 -0
  113. data/lib/oxidized/model/netgear.rb +3 -4
  114. data/lib/oxidized/model/netscaler.rb +0 -2
  115. data/lib/oxidized/model/nos.rb +1 -3
  116. data/lib/oxidized/model/nxos.rb +13 -3
  117. data/lib/oxidized/model/oneos.rb +6 -8
  118. data/lib/oxidized/model/openbsd.rb +76 -0
  119. data/lib/oxidized/model/opengear.rb +3 -5
  120. data/lib/oxidized/model/openwrt.rb +77 -0
  121. data/lib/oxidized/model/opnsense.rb +19 -0
  122. data/lib/oxidized/model/outputs.rb +1 -3
  123. data/lib/oxidized/model/panos.rb +1 -2
  124. data/lib/oxidized/model/pfsense.rb +9 -5
  125. data/lib/oxidized/model/planet.rb +8 -12
  126. data/lib/oxidized/model/powerconnect.rb +6 -9
  127. data/lib/oxidized/model/procurve.rb +18 -4
  128. data/lib/oxidized/model/quantaos.rb +3 -5
  129. data/lib/oxidized/model/routeros.rb +3 -2
  130. data/lib/oxidized/model/saos.rb +0 -1
  131. data/lib/oxidized/model/screenos.rb +3 -5
  132. data/lib/oxidized/model/sgos.rb +2 -3
  133. data/lib/oxidized/model/siklu.rb +0 -2
  134. data/lib/oxidized/model/slxos.rb +59 -0
  135. data/lib/oxidized/model/sros.rb +117 -0
  136. data/lib/oxidized/model/stoneos.rb +32 -0
  137. data/lib/oxidized/model/supermicro.rb +6 -41
  138. data/lib/oxidized/model/timos.rb +6 -114
  139. data/lib/oxidized/model/tmos.rb +1 -3
  140. data/lib/oxidized/model/tplink.rb +7 -11
  141. data/lib/oxidized/model/trango.rb +6 -7
  142. data/lib/oxidized/model/ucs.rb +0 -1
  143. data/lib/oxidized/model/voltaire.rb +3 -6
  144. data/lib/oxidized/model/voss.rb +1 -2
  145. data/lib/oxidized/model/vrp.rb +4 -5
  146. data/lib/oxidized/model/vyatta.rb +6 -4
  147. data/lib/oxidized/model/weos.rb +1 -3
  148. data/lib/oxidized/model/xos.rb +6 -5
  149. data/lib/oxidized/model/zhoneolt.rb +2 -2
  150. data/lib/oxidized/model/zynos.rb +1 -3
  151. data/lib/oxidized/model/zynoscli.rb +36 -0
  152. data/lib/oxidized/node.rb +11 -11
  153. data/lib/oxidized/node/stats.rb +15 -2
  154. data/lib/oxidized/nodes.rb +8 -8
  155. data/lib/oxidized/output/file.rb +41 -42
  156. data/lib/oxidized/output/git.rb +113 -115
  157. data/lib/oxidized/output/gitcrypt.rb +241 -242
  158. data/lib/oxidized/output/http.rb +23 -27
  159. data/lib/oxidized/output/output.rb +1 -2
  160. data/lib/oxidized/source/csv.rb +44 -45
  161. data/lib/oxidized/source/http.rb +52 -49
  162. data/lib/oxidized/source/source.rb +6 -7
  163. data/lib/oxidized/source/sql.rb +55 -51
  164. data/lib/oxidized/string.rb +3 -4
  165. data/lib/oxidized/version.rb +17 -1
  166. data/lib/oxidized/worker.rb +12 -3
  167. data/oxidized.gemspec +19 -13
  168. metadata +139 -51
  169. data/.ruby-version +0 -1
  170. data/Gemfile.lock +0 -44
@@ -6,7 +6,7 @@ module Oxidized
6
6
 
7
7
  def initialize max, interval, nodes
8
8
  @max = max
9
- # Set interval to 1 if interval is 0 (=disabled) so we don't break
9
+ # Set interval to 1 if interval is 0 (=disabled) so we don't break
10
10
  # the 'ceil' function
11
11
  @interval = interval == 0 ? 1 : interval
12
12
  @nodes = nodes
@@ -28,7 +28,7 @@ module Oxidized
28
28
  @durations.fill AVERAGE_DURATION, @durations.size...@nodes.size
29
29
  end
30
30
  @durations.push(last).shift
31
- @duration = @durations.inject(:+).to_f / @nodes.size #rolling average
31
+ @duration = @durations.inject(:+).to_f / @nodes.size # rolling average
32
32
  new_count
33
33
  end
34
34
 
@@ -45,9 +45,8 @@ module Oxidized
45
45
  # and c) there is more than MAX_INTER_JOB_GAP since last one was started
46
46
  # then we want one more thread (rationale is to fix hanging thread causing HOLB)
47
47
  if @want <= size and @want < @nodes.size
48
- @want +=1 if (Time.now.utc - @last) > MAX_INTER_JOB_GAP
48
+ @want += 1 if (Time.now.utc - @last) > MAX_INTER_JOB_GAP
49
49
  end
50
50
  end
51
-
52
51
  end
53
52
  end
@@ -7,11 +7,11 @@ module Oxidized
7
7
  class << self
8
8
  def load dir, file
9
9
  begin
10
- require File.join dir, file+'.rb'
10
+ require File.join dir, file + '.rb'
11
11
  klass = nil
12
12
  [Oxidized, Object].each do |mod|
13
13
  klass = mod.constants.find { |const| const.to_s.downcase == file.downcase }
14
- klass = mod.constants.find { |const| const.to_s.downcase == 'oxidized'+ file.downcase } unless klass
14
+ klass = mod.constants.find { |const| const.to_s.downcase == 'oxidized' + file.downcase } unless klass
15
15
  klass = mod.const_get klass if klass
16
16
  break if klass
17
17
  end
@@ -31,16 +31,19 @@ module Oxidized
31
31
  @source = {}
32
32
  @hook = {}
33
33
  end
34
+
34
35
  def add_input method
35
36
  method = Manager.load Config::InputDir, method
36
37
  return false if method.empty?
37
38
  @input.merge! method
38
39
  end
40
+
39
41
  def add_output method
40
42
  method = Manager.load Config::OutputDir, method
41
43
  return false if method.empty?
42
44
  @output.merge! method
43
45
  end
46
+
44
47
  def add_model _model
45
48
  name = _model
46
49
  _model = Manager.load File.join(Config::Root, 'model'), name
@@ -48,14 +51,16 @@ module Oxidized
48
51
  return false if _model.empty?
49
52
  @model.merge! _model
50
53
  end
54
+
51
55
  def add_source _source
52
- return nil if @source.key? _source
56
+ return nil if @source.has_key? _source
53
57
  _source = Manager.load Config::SourceDir, _source
54
58
  return false if _source.empty?
55
59
  @source.merge! _source
56
60
  end
61
+
57
62
  def add_hook _hook
58
- return nil if @hook.key? _hook
63
+ return nil if @hook.has_key? _hook
59
64
  name = _hook
60
65
  _hook = Manager.load File.join(Config::Root, 'hook'), name
61
66
  _hook = Manager.load Config::HookDir, name if _hook.empty?
@@ -3,7 +3,7 @@ class ACOS < Oxidized::Model
3
3
 
4
4
  comment '! '
5
5
 
6
- ##ACOS prompt changes depending on the state of the device
6
+ # ACOS prompt changes depending on the state of the device
7
7
  prompt /^([-\w.\/:?\[\]\(\)]+[#>]\s?)$/
8
8
 
9
9
  cmd :secret do |cfg|
@@ -30,19 +30,19 @@ class ACOS < Oxidized::Model
30
30
  end
31
31
 
32
32
  cmd 'show partition-config all' do |cfg|
33
- cfg.gsub! /(Current configuration).*/, '\\1 <removed>'
34
- cfg.gsub! /(Configuration last updated at).*/, '\\1 <removed>'
35
- cfg.gsub! /(Configuration last saved at).*/, '\\1 <removed>'
36
- cfg.gsub! /(Configuration last synchronized at).*/, '\\1 <removed>'
37
- cfg
38
- end
33
+ cfg.gsub! /(Current configuration).*/, '\\1 <removed>'
34
+ cfg.gsub! /(Configuration last updated at).*/, '\\1 <removed>'
35
+ cfg.gsub! /(Configuration last saved at).*/, '\\1 <removed>'
36
+ cfg.gsub! /(Configuration last synchronized at).*/, '\\1 <removed>'
37
+ cfg
38
+ end
39
39
 
40
40
  cmd 'show running-config all-partitions' do |cfg|
41
- cfg.gsub! /(Current configuration).*/, '\\1 <removed>'
42
- cfg.gsub! /(Configuration last updated at).*/, '\\1 <removed>'
43
- cfg.gsub! /(Configuration last saved at).*/, '\\1 <removed>'
44
- cfg.gsub! /(Configuration last synchronized at).*/, '\\1 <removed>'
45
- cfg
41
+ cfg.gsub! /(Current configuration).*/, '\\1 <removed>'
42
+ cfg.gsub! /(Configuration last updated at).*/, '\\1 <removed>'
43
+ cfg.gsub! /(Configuration last saved at).*/, '\\1 <removed>'
44
+ cfg.gsub! /(Configuration last synchronized at).*/, '\\1 <removed>'
45
+ cfg
46
46
  end
47
47
 
48
48
  cmd 'show aflex all-partitions' do |cfg|
@@ -50,7 +50,7 @@ class ACOS < Oxidized::Model
50
50
  end
51
51
 
52
52
  cmd 'show aflex all-partitions' do |cfg|
53
- @partitions_aflex = cfg.lines.each_with_object({}) do |l,h|
53
+ @partitions_aflex = cfg.lines.each_with_object({}) do |l, h|
54
54
  h[$1] = [] if l.match /partition: (.+)/
55
55
  # only consider scripts that have passed syntax check
56
56
  h[h.keys.last] << $1 if l.match /^([\w-]+) +Check/
@@ -66,7 +66,7 @@ class ACOS < Oxidized::Model
66
66
  pre do
67
67
  unless @partitions_aflex.empty?
68
68
  out = []
69
- @partitions_aflex.each do |partition,arules|
69
+ @partitions_aflex.each do |partition, arules|
70
70
  out << "! partition: #{partition}"
71
71
  arules.each do |name|
72
72
  cmd("show aflex #{name} partition #{partition}") do |cfg|
@@ -85,7 +85,7 @@ class ACOS < Oxidized::Model
85
85
  username /login:/
86
86
  password /^Password:/
87
87
  end
88
-
88
+
89
89
  cfg :telnet, :ssh do
90
90
  # preferred way to handle additional passwords
91
91
  post_login do
@@ -98,5 +98,4 @@ class ACOS < Oxidized::Model
98
98
  post_login 'terminal width 0'
99
99
  pre_logout "exit\nexit\nY\r\n"
100
100
  end
101
-
102
101
  end
@@ -1,5 +1,4 @@
1
1
  class ACSW < Oxidized::Model
2
-
3
2
  prompt /([\w.@()\/\\-]+[#>]\s?)/
4
3
  comment '! '
5
4
 
@@ -25,16 +24,13 @@ class ACSW < Oxidized::Model
25
24
  cfg
26
25
  end
27
26
 
28
-
29
27
  cmd 'show version' do |cfg|
30
28
  comment cfg
31
29
  end
32
30
 
33
-
34
- cmd 'show inventory' do |cfg|
35
- comment cfg
36
- end
37
-
31
+ cmd 'show inventory' do |cfg|
32
+ comment cfg
33
+ end
38
34
 
39
35
  cmd 'show running-config' do |cfg|
40
36
  cfg = cfg.each_line.to_a[3..-1]
@@ -63,5 +59,4 @@ class ACSW < Oxidized::Model
63
59
  post_login 'terminal length 0'
64
60
  pre_logout 'exit'
65
61
  end
66
-
67
62
  end
@@ -16,5 +16,4 @@ class AEN < Oxidized::Model
16
16
  cfg :ssh do
17
17
  pre_logout 'exit'
18
18
  end
19
-
20
- end
19
+ end
@@ -1,17 +1,16 @@
1
1
  class Aireos < Oxidized::Model
2
-
3
2
  # AireOS (at least I think that is what it's called, hard to find data)
4
3
  # Used in Cisco WLC 5500
5
4
 
6
- comment '# ' ## this complains too, can't find real comment char
5
+ comment '# ' # this complains too, can't find real comment char
7
6
  prompt /^\([^\)]+\)\s>/
8
7
 
9
8
  cmd :all do |cfg|
10
9
  cfg.each_line.to_a[1..-2].join
11
10
  end
12
11
 
13
- ##show sysinfo?
14
- ##show switchconfig?
12
+ # show sysinfo?
13
+ # show switchconfig?
15
14
 
16
15
  cmd 'show udi' do |cfg|
17
16
  cfg = comment clean cfg
@@ -51,5 +50,4 @@ class Aireos < Oxidized::Model
51
50
  out = out.join "\n"
52
51
  out << "\n"
53
52
  end
54
-
55
53
  end
@@ -1,5 +1,4 @@
1
1
  class ALTEONOS < Oxidized::Model
2
-
3
2
  prompt /^\(?.+\)?\s?[#>]/
4
3
 
5
4
  comment '! '
@@ -11,19 +10,19 @@ class ALTEONOS < Oxidized::Model
11
10
  cfg
12
11
  end
13
12
 
14
- ##############################################################################################
15
- ## Added to remove #
16
- ## #
17
- ##/* Configuration dump taken 14:10:20 Fri Jul 28, 2017 (DST) #
18
- ##/* Configuration last applied at 16:17:05 Fri Jul 14, 2017 #
19
- ##/* Configuration last save at 16:17:43 Fri Jul 14, 2017 #
20
- ##/* Version 29.0.3.12, vXXXXXXXX, Base MAC address XXXXXXXXXXX #
21
- ##/* To restore SSL Offloading configuration and management HTTPS access, #
22
- ##/* it is recommended to include the private keys in the dump. #
23
- ## OR #
24
- ##/* To restore SSL Offloading configuration and management HTTPS access,it is recommended #
25
- ##/* to include the private keys in the dump. #
26
- ## #
13
+ ##############################################################################################
14
+ # Added to remove #
15
+ # #
16
+ # /* Configuration dump taken 14:10:20 Fri Jul 28, 2017 (DST) #
17
+ # /* Configuration last applied at 16:17:05 Fri Jul 14, 2017 #
18
+ # /* Configuration last save at 16:17:43 Fri Jul 14, 2017 #
19
+ # /* Version 29.0.3.12, vXXXXXXXX, Base MAC address XXXXXXXXXXX #
20
+ # /* To restore SSL Offloading configuration and management HTTPS access, #
21
+ # /* it is recommended to include the private keys in the dump. #
22
+ # OR #
23
+ # /* To restore SSL Offloading configuration and management HTTPS access,it is recommended #
24
+ # /* to include the private keys in the dump. #
25
+ # #
27
26
  ##############################################################################################
28
27
 
29
28
  cmd 'cfg/dump' do |cfg|
@@ -35,19 +34,19 @@ class ALTEONOS < Oxidized::Model
35
34
  cfg
36
35
  end
37
36
 
38
- #Answer for Dispay private keys
37
+ # Answer for Dispay private keys
39
38
  expect /^Display private keys\?\s?\[y\/n\]\: $/ do |data, re|
40
39
  send "n\r"
41
40
  data.sub re, ''
42
41
  end
43
42
 
44
- #Answer for sync to peer on exit
43
+ # Answer for sync to peer on exit
45
44
  expect /^Confirm Sync to Peer\s?\[y\/n\]\: $/ do |data, re|
46
45
  send "n\r"
47
46
  data.sub re, ''
48
47
  end
49
48
 
50
- #Answer for Unsaved configuration
49
+ # Answer for Unsaved configuration
51
50
  expect /^(WARNING: There are unsaved configuration changes).*/ do |data, re|
52
51
  send "n\r"
53
52
  data.sub re, ''
@@ -56,5 +55,4 @@ class ALTEONOS < Oxidized::Model
56
55
  cfg :ssh do
57
56
  pre_logout 'exit'
58
57
  end
59
-
60
58
  end
@@ -1,5 +1,4 @@
1
1
  class Alvarion < Oxidized::Model
2
-
3
2
  # Used in Alvarion wisp equipment
4
3
 
5
4
  # Run this command as an instance of Model so we can access node
@@ -7,9 +6,6 @@ class Alvarion < Oxidized::Model
7
6
  cmd "#{node.auth[:password]}.cfg"
8
7
  end
9
8
 
10
-
11
9
  cfg :tftp do
12
-
13
10
  end
14
-
15
11
  end
@@ -1,8 +1,7 @@
1
1
  class AOS < Oxidized::Model
2
-
3
2
  # Alcatel-Lucent Operating System
4
3
  # used in OmniSwitch
5
-
4
+
6
5
  comment '! '
7
6
 
8
7
  cmd :all do |cfg|
@@ -10,7 +9,7 @@ class AOS < Oxidized::Model
10
9
  end
11
10
 
12
11
  cmd 'show system' do |cfg|
13
- cfg = cfg.each_line.find{|line|line.match 'Description'}
12
+ cfg = cfg.each_line.find { |line| line.match 'Description' }
14
13
  comment cfg.to_s.strip
15
14
  end
16
15
 
@@ -34,5 +33,4 @@ class AOS < Oxidized::Model
34
33
  cfg :telnet, :ssh do
35
34
  pre_logout 'exit'
36
35
  end
37
-
38
36
  end
@@ -1,8 +1,7 @@
1
1
  class AOS7 < Oxidized::Model
2
-
3
2
  # Alcatel-Lucent Operating System Version 7 (Linux based)
4
3
  # used in OmniSwitch 6900/10k
5
-
4
+
6
5
  comment '! '
7
6
 
8
7
  cmd :all do |cfg, cmdstring|
@@ -11,7 +10,7 @@ class AOS7 < Oxidized::Model
11
10
  end
12
11
 
13
12
  cmd 'show system' do |cfg|
14
- cfg = cfg.each_line.find{|line|line.match 'Description'}
13
+ cfg = cfg.each_line.find { |line| line.match 'Description' }
15
14
  comment cfg.to_s.strip + "\n"
16
15
  end
17
16
 
@@ -1,17 +1,16 @@
1
1
  class AOSW < Oxidized::Model
2
-
3
2
  # AOSW Aruba Wireless, IAP, Instant Controller and Mobility Access Switches
4
3
  # Used in Alcatel OAW-4750 WLAN controller
5
4
  # Also Dell controllers
6
-
5
+
7
6
  # HPE Aruba Switches should use a different model as the software is based on the HP Procurve line.
8
-
7
+
9
8
  # Support for IAP & Instant Controller tested with 115, 205, 215 & 325 running 6.4.4.8-4.2.4.5_57965
10
9
  # Support for Mobility Access Switches tested with S2500-48P & S2500-24P running 7.4.1.4_54199 and S2500-24P running 7.4.1.7_57823
11
- # All IAPs connected to a Instant Controller will have the same config output. Only the controller needs to be monitored.
10
+ # All IAPs connected to a Instant Controller will have the same config output. Only the controller needs to be monitored.
12
11
 
13
12
  comment '# '
14
- prompt /^\(?.+\)?\s?[#>]/
13
+ prompt /^\(?.+\)?\s[#>]/
15
14
 
16
15
  cmd :all do |cfg|
17
16
  cfg.each_line.to_a[1..-2].join
@@ -26,11 +25,11 @@ class AOSW < Oxidized::Model
26
25
  cfg.gsub!(/ sha (\S+)/, ' sha <secret removed>')
27
26
  cfg.gsub!(/ des (\S+)/, ' des <secret removed>')
28
27
  cfg.gsub!(/mobility-manager (\S+) user (\S+) (\S+)/, 'mobility-manager \1 user \2 <secret removed>')
29
- cfg.gsub!(/mgmt-user (\S+) (root|guest\-provisioning|network\-operations|read\-only|location\-api\-mgmt) (\S+)$/, 'mgmt-user \1 \2 <secret removed>') #MAS & Wireless Controler
30
- cfg.gsub!(/mgmt-user (\S+) (\S+)( (read\-only|guest\-mgmt))?$/, 'mgmt-user \1 <secret removed> \3') #IAP
31
- #MAS format: mgmt-user <username> <accesslevel> <password hash>
32
- #IAP format (root user): mgmt-user <username> <password hash>
33
- #IAP format: mgmt-user <username> <password hash> <access level>
28
+ cfg.gsub!(/mgmt-user (\S+) (root|guest\-provisioning|network\-operations|read\-only|location\-api\-mgmt) (\S+)$/, 'mgmt-user \1 \2 <secret removed>') # MAS & Wireless Controler
29
+ cfg.gsub!(/mgmt-user (\S+) (\S+)( (read\-only|guest\-mgmt))?$/, 'mgmt-user \1 <secret removed> \3') # IAP
30
+ # MAS format: mgmt-user <username> <accesslevel> <password hash>
31
+ # IAP format (root user): mgmt-user <username> <password hash>
32
+ # IAP format: mgmt-user <username> <password hash> <access level>
34
33
  cfg.gsub!(/key (\S+)$/, 'key <secret removed>')
35
34
  cfg.gsub!(/wpa-passphrase (\S+)$/, 'wpa-passphrase <secret removed>')
36
35
  cfg.gsub!(/bkup-passwords (\S+)$/, 'bkup-passwords <secret removed>')
@@ -40,22 +39,22 @@ class AOSW < Oxidized::Model
40
39
  end
41
40
 
42
41
  cmd 'show version' do |cfg|
43
- cfg = cfg.each_line.select { |line| not line.match /(Switch|AP) uptime/i }
42
+ cfg = cfg.each_line.reject { |line| line.match /(Switch|AP) uptime/i }
44
43
  rstrip_cfg comment cfg.join
45
44
  end
46
45
 
47
46
  cmd 'show inventory' do |cfg|
48
- cfg = "" if cfg.match /(Invalid input detected at '\^' marker|Parse error)/ #Don't show for unsupported devices (IAP and MAS)
47
+ cfg = "" if cfg.match /(Invalid input detected at '\^' marker|Parse error)/ # Don't show for unsupported devices (IAP and MAS)
49
48
  rstrip_cfg clean cfg
50
49
  end
51
50
 
52
51
  cmd 'show slots' do |cfg|
53
- cfg = "" if cfg.match /(Invalid input detected at '\^' marker|Parse error)/ #Don't show for unsupported devices (IAP and MAS)
52
+ cfg = "" if cfg.match /(Invalid input detected at '\^' marker|Parse error)/ # Don't show for unsupported devices (IAP and MAS)
54
53
  rstrip_cfg comment cfg
55
54
  end
56
55
 
57
56
  cmd 'show license' do |cfg|
58
- cfg = "" if cfg.match /(Invalid input detected at '\^' marker|Parse error)/ #Don't show for unsupported devices (IAP and MAS)
57
+ cfg = "" if cfg.match /(Invalid input detected at '\^' marker|Parse error)/ # Don't show for unsupported devices (IAP and MAS)
59
58
  rstrip_cfg comment cfg
60
59
  end
61
60
 
@@ -112,5 +111,4 @@ class AOSW < Oxidized::Model
112
111
  out = comment out.join "\n"
113
112
  out << "\n"
114
113
  end
115
-
116
114
  end
@@ -1,11 +1,8 @@
1
1
  class Apc_aos < Oxidized::Model
2
-
3
2
  cmd 'config.ini' do |cfg|
4
3
  cfg.gsub! /^; Configuration file\, generated on.*/, ''
5
4
  end
6
5
 
7
6
  cfg :ftp do
8
7
  end
9
-
10
8
  end
11
-
@@ -0,0 +1,26 @@
1
+ class ARBOS < Oxidized::Model
2
+ # Arbor OS model #
3
+
4
+ prompt /^[\S\s]+\n([\w.@-]+[:\/#>]+)\s?$/
5
+ comment '# '
6
+
7
+ cmd 'system hardware' do |cfg|
8
+ cfg.gsub! /^Boot\ time\:\s.+/, '' # Remove boot timer
9
+ cfg.gsub! /^Load\ averages\:\s.+/, '' # Remove CPU load info
10
+ cfg = cfg.each_line.to_a[2..-1].join
11
+ comment cfg
12
+ end
13
+
14
+ cmd 'system version' do |cfg|
15
+ comment cfg
16
+ end
17
+
18
+ cmd 'config show' do |cfg|
19
+ cfg
20
+ end
21
+
22
+ cfg :ssh do
23
+ exec true
24
+ pre_logout 'exit'
25
+ end
26
+ end