oxidized 0.20.0 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile.lock +1 -1
- data/README.md +135 -865
- data/docs/Configuration.md +186 -0
- data/docs/Hooks.md +143 -0
- data/docs/Outputs.md +190 -0
- data/docs/Ruby-API.md +115 -0
- data/docs/Sources.md +110 -0
- data/docs/Supported-OS-Types.md +149 -0
- data/docs/VRP-Huawei.md +27 -0
- data/extra/oxidized-report-git-commits +21 -40
- data/extra/oxidized-ubuntu.haproxy +45 -0
- data/extra/oxidized.service +4 -0
- data/lib/oxidized/hook.rb +1 -0
- data/lib/oxidized/hook/exec.rb +0 -1
- data/lib/oxidized/input/ssh.rb +11 -8
- data/lib/oxidized/model/acsw.rb +67 -0
- data/lib/oxidized/model/aen.rb +20 -0
- data/lib/oxidized/model/alteonos.rb +60 -0
- data/lib/oxidized/model/asa.rb +53 -18
- data/lib/oxidized/model/asyncos.rb +49 -0
- data/lib/oxidized/model/audiocodes.rb +32 -0
- data/lib/oxidized/model/boss.rb +76 -0
- data/lib/oxidized/model/ciscosma.rb +45 -0
- data/lib/oxidized/model/ciscosmb.rb +6 -1
- data/lib/oxidized/model/coriantgroove.rb +30 -0
- data/lib/oxidized/model/dlink.rb +1 -0
- data/lib/oxidized/model/enterasys.rb +30 -0
- data/lib/oxidized/model/fiberdriver.rb +1 -1
- data/lib/oxidized/model/fortios.rb +3 -1
- data/lib/oxidized/model/ftos.rb +2 -0
- data/lib/oxidized/model/hirschmann.rb +41 -0
- data/lib/oxidized/model/hpemsa.rb +13 -0
- data/lib/oxidized/model/ios.rb +2 -2
- data/lib/oxidized/model/iosxr.rb +1 -0
- data/lib/oxidized/model/ipos.rb +7 -1
- data/lib/oxidized/model/ironware.rb +4 -1
- data/lib/oxidized/model/netgear.rb +12 -4
- data/lib/oxidized/model/panos.rb +1 -1
- data/lib/oxidized/model/planet.rb +2 -1
- data/lib/oxidized/model/powerconnect.rb +5 -0
- data/lib/oxidized/model/procurve.rb +13 -0
- data/lib/oxidized/model/routeros.rb +12 -5
- data/lib/oxidized/model/sgos.rb +46 -0
- data/lib/oxidized/model/ucs.rb +31 -0
- data/lib/oxidized/model/voss.rb +12 -3
- data/lib/oxidized/model/vrp.rb +6 -0
- data/lib/oxidized/model/weos.rb +22 -0
- data/lib/oxidized/model/xos.rb +4 -0
- data/lib/oxidized/node.rb +4 -2
- data/lib/oxidized/nodes.rb +1 -0
- data/lib/oxidized/version.rb +1 -1
- data/lib/oxidized/worker.rb +23 -2
- data/oxidized.gemspec +1 -1
- metadata +54 -46
@@ -0,0 +1,45 @@
|
|
1
|
+
class CiscoSMA < Oxidized::Model
|
2
|
+
|
3
|
+
# SMA prompt "mail.example.com> "
|
4
|
+
prompt /^\r*([-\w. ]+\.[-\w. ]+\.[-\w. ]+[#>]\s+)$/
|
5
|
+
comment '! '
|
6
|
+
|
7
|
+
# Select passphrase display option
|
8
|
+
expect /using loadconfig command\. \[Y\]\>/ do |data, re|
|
9
|
+
send "y\n"
|
10
|
+
data.sub re, ''
|
11
|
+
end
|
12
|
+
|
13
|
+
# handle paging
|
14
|
+
expect /-Press Any Key For More-+.*$/ do |data, re|
|
15
|
+
send " "
|
16
|
+
data.sub re, ''
|
17
|
+
end
|
18
|
+
|
19
|
+
cmd 'version' do |cfg|
|
20
|
+
comment cfg
|
21
|
+
end
|
22
|
+
|
23
|
+
cmd 'showconfig' do |cfg|
|
24
|
+
#Delete hour and date which change each run
|
25
|
+
#cfg.gsub! /\sCurrent Time: \S+\s\S+\s+\S+\s\S+\s\S+/, ' Current Time:'
|
26
|
+
# Delete select passphrase display option
|
27
|
+
cfg.gsub! /Do you want to mask the password\? Files with masked passwords cannot be loaded/, ''
|
28
|
+
cfg.gsub! /^\s+y/, ''
|
29
|
+
# Delete space
|
30
|
+
cfg.gsub! /\n\s{25}/, ''
|
31
|
+
# Delete after line
|
32
|
+
cfg.gsub! /([\/\-,.\w><@]+)(\s{27})/,"\\1"
|
33
|
+
# Add a carriage return
|
34
|
+
cfg.gsub! /([\/\-,.\w><@]+)(\s{6,8})([\/\-,.\w><@]+)/,"\\1\n\\2\\3"
|
35
|
+
# Delete prompt
|
36
|
+
cfg.gsub! /^\r*([-\w. ]+\.[-\w. ]+\.[-\w. ]+[#>]\s+)$/, ''
|
37
|
+
cfg
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
cfg :ssh do
|
42
|
+
pre_logout "exit"
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class CiscoSMB < Oxidized::Model
|
2
2
|
|
3
|
-
# Cisco Small Business
|
3
|
+
# Cisco Small Business 300, 500, and ESW2 series switches
|
4
4
|
# http://www.cisco.com/c/en/us/support/switches/small-business-300-series-managed-switches/products-release-notes-list.html
|
5
5
|
|
6
6
|
prompt /^\r?([\w.@()-]+[#>]\s?)$/
|
@@ -16,12 +16,17 @@ class CiscoSMB < Oxidized::Model
|
|
16
16
|
cmd :secret do |cfg|
|
17
17
|
cfg.gsub! /^(snmp-server community).*/, '\\1 <configuration removed>'
|
18
18
|
cfg.gsub! /username (\S+) privilege (\d+) (\S+).*/, '<secret hidden>'
|
19
|
+
cfg.gsub! /^(encrypted radius-server key).*/, '\\1 <configuration removed>'
|
19
20
|
cfg
|
20
21
|
end
|
21
22
|
|
22
23
|
cmd 'show version' do |cfg|
|
23
24
|
comment cfg
|
24
25
|
end
|
26
|
+
|
27
|
+
cmd 'show bootvar' do |cfg|
|
28
|
+
comment cfg
|
29
|
+
end
|
25
30
|
|
26
31
|
cmd 'show running-config' do |cfg|
|
27
32
|
cfg = cfg.each_line.to_a[0..-1].join
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class CoriantGroove < Oxidized::Model
|
2
|
+
|
3
|
+
comment '# '
|
4
|
+
|
5
|
+
prompt /^(\w+@.*>\s*)$/
|
6
|
+
|
7
|
+
cmd :all do |cfg|
|
8
|
+
cfg.each_line.to_a[1..-3].map{|line|line.delete("\r").rstrip}.join("\n") + "\n"
|
9
|
+
end
|
10
|
+
|
11
|
+
cmd 'show inventory' do |cfg|
|
12
|
+
cfg = cfg.each_line.to_a[0..-2].join
|
13
|
+
comment cfg
|
14
|
+
end
|
15
|
+
|
16
|
+
cmd 'show softwareload' do |cfg|
|
17
|
+
cfg = cfg.each_line.to_a[0..-2].join
|
18
|
+
comment cfg
|
19
|
+
end
|
20
|
+
|
21
|
+
cmd 'show config | display commands' do |cfg|
|
22
|
+
cfg.each_line.to_a[1..-1].join
|
23
|
+
end
|
24
|
+
|
25
|
+
cfg :ssh do
|
26
|
+
post_login 'set -f cli-config cli-columns 65535'
|
27
|
+
pre_logout 'quit -f'
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
data/lib/oxidized/model/dlink.rb
CHANGED
@@ -0,0 +1,30 @@
|
|
1
|
+
class Enterasys < Oxidized::Model
|
2
|
+
|
3
|
+
# Enterasys B3/C3 models #
|
4
|
+
|
5
|
+
prompt /^.+\w\(su\)->\s?$/
|
6
|
+
|
7
|
+
comment '!'
|
8
|
+
|
9
|
+
cmd :all do |cfg|
|
10
|
+
cfg.each_line.to_a[2..-3].map{|line|line.delete("\r").rstrip}.join("\n") + "\n"
|
11
|
+
end
|
12
|
+
|
13
|
+
cmd 'show system hardware' do |cfg|
|
14
|
+
comment cfg
|
15
|
+
end
|
16
|
+
|
17
|
+
cmd 'show config' do |cfg|
|
18
|
+
cfg.gsub! /^This command shows non-default configurations only./, ''
|
19
|
+
cfg.gsub! /^Use 'show config all' to show both default and non-default configurations./, ''
|
20
|
+
cfg.gsub! /^!|#.*/, ''
|
21
|
+
cfg.gsub! /^$\n/, ''
|
22
|
+
|
23
|
+
cfg
|
24
|
+
end
|
25
|
+
|
26
|
+
cfg :ssh do
|
27
|
+
pre_logout 'exit'
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -13,7 +13,7 @@ class FiberDriver < Oxidized::Model
|
|
13
13
|
cfg.each_line.to_a[3..-1].join
|
14
14
|
cfg.gsub! /^Building configuration.*$/, ''
|
15
15
|
cfg.gsub! /^Current configuration:.*$$/, ''
|
16
|
-
cfg.gsub! /^! Configuration saved on .*$/, ''
|
16
|
+
cfg.gsub! /^! Configuration (saved|generated) on .*$/, ''
|
17
17
|
cfg
|
18
18
|
end
|
19
19
|
|
@@ -15,8 +15,9 @@ class FortiOS < Oxidized::Model
|
|
15
15
|
end
|
16
16
|
|
17
17
|
cmd :secret do |cfg|
|
18
|
-
cfg.gsub! /(set (?:passwd|password|psksecret|secret|key ENC)).*/, '\\1 <configuration removed>'
|
18
|
+
cfg.gsub! /(set (?:passwd|password|secondary-secret|rsso-secret|psksecret|secret|key ENC)).*/, '\\1 <configuration removed>'
|
19
19
|
cfg.gsub! /(set private-key).*-+END ENCRYPTED PRIVATE KEY-*"$/m , '\\1 <configuration removed>'
|
20
|
+
cfg.gsub! /(IPS Malicious URL Database).*/, '\\1 <configuration removed>'
|
20
21
|
cfg
|
21
22
|
end
|
22
23
|
|
@@ -38,6 +39,7 @@ class FortiOS < Oxidized::Model
|
|
38
39
|
#do not include if variable "show_autoupdate" is set to false
|
39
40
|
if defined?(vars(:fortios_autoupdate)).nil? || vars(:fortios_autoupdate)
|
40
41
|
cfg << cmd('diagnose autoupdate version') do |cfg|
|
42
|
+
cfg.gsub! /(FDS Address\n---------\n).*/, '\\1IP Address removed'
|
41
43
|
comment cfg.each_line.reject { |line| line.match /Last Update|Result/ }.join
|
42
44
|
end
|
43
45
|
end
|
data/lib/oxidized/model/ftos.rb
CHANGED
@@ -15,6 +15,8 @@ class FTOS < Oxidized::Model
|
|
15
15
|
end
|
16
16
|
|
17
17
|
cmd 'show inventory' do |cfg|
|
18
|
+
# Old versions of FTOS can occasionally return data that triggers encoding errors.
|
19
|
+
cfg.encode!("UTF-8", :invalid => :replace, :undef => :replace, :replace => "")
|
18
20
|
comment cfg
|
19
21
|
end
|
20
22
|
|
@@ -0,0 +1,41 @@
|
|
1
|
+
class Hirschmann < Oxidized::Model
|
2
|
+
|
3
|
+
prompt /^[\(\w\s\w\)]+\s[>|#]+?$/
|
4
|
+
|
5
|
+
comment '## '
|
6
|
+
|
7
|
+
#Handle pager
|
8
|
+
expect /^--More--.*$/ do |data, re|
|
9
|
+
send 'a'
|
10
|
+
data.sub re, ''
|
11
|
+
end
|
12
|
+
|
13
|
+
cmd :all do |cfg|
|
14
|
+
cfg.each_line.to_a[1..-2].join
|
15
|
+
end
|
16
|
+
|
17
|
+
cmd 'show sysinfo' do |cfg|
|
18
|
+
cfg.gsub! /^System Up Time.*\n/, ""
|
19
|
+
cfg.gsub! /^System Date and Time.*\n/, ""
|
20
|
+
cfg.gsub! /^CPU Utilization.*\n/, ""
|
21
|
+
cfg.gsub! /^Memory.*\n/, ""
|
22
|
+
cfg.gsub! /^Average CPU Utilization.*\n/, ""
|
23
|
+
comment cfg
|
24
|
+
end
|
25
|
+
|
26
|
+
cmd 'show running-config' do |cfg|
|
27
|
+
cfg.gsub! /^users.*\n/, ""
|
28
|
+
cfg
|
29
|
+
end
|
30
|
+
|
31
|
+
cfg :telnet do
|
32
|
+
username /^User:/
|
33
|
+
password /^Password:/
|
34
|
+
end
|
35
|
+
|
36
|
+
cfg :telnet, :ssh do
|
37
|
+
post_login 'enable'
|
38
|
+
pre_logout 'logout'
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
data/lib/oxidized/model/ios.rb
CHANGED
data/lib/oxidized/model/iosxr.rb
CHANGED
data/lib/oxidized/model/ipos.rb
CHANGED
@@ -3,7 +3,7 @@ class IPOS < Oxidized::Model
|
|
3
3
|
# Ericsson SSR (IPOS)
|
4
4
|
# Redback SE (SEOS)
|
5
5
|
|
6
|
-
prompt /^([\[\]\w.@-]+[
|
6
|
+
prompt /^([\[\]\w.@-]+[#:>]\s?)$/
|
7
7
|
comment '! '
|
8
8
|
|
9
9
|
cmd 'show chassis' do |cfg|
|
@@ -52,6 +52,12 @@ class IPOS < Oxidized::Model
|
|
52
52
|
|
53
53
|
cfg :telnet, :ssh do
|
54
54
|
post_login 'terminal length 0'
|
55
|
+
if vars :enable
|
56
|
+
post_login do
|
57
|
+
cmd "enable"
|
58
|
+
cmd vars(:enable)
|
59
|
+
end
|
60
|
+
end
|
55
61
|
pre_logout do
|
56
62
|
send "exit\n"
|
57
63
|
send "n\n"
|
@@ -34,6 +34,8 @@ class IronWare < Oxidized::Model
|
|
34
34
|
cfg.gsub! /(^((.*)Current temp(.*))$)/, '' #remove unwanted lines current temperature
|
35
35
|
cfg.gsub! /Speed = [A-Z-]{2,6} \(\d{2,3}\%\)/, '' #remove unwanted lines Speed Fans
|
36
36
|
cfg.gsub! /current speed is [A-Z]{2,6} \(\d{2,3}\%\)/, ''
|
37
|
+
cfg.gsub! /Fan \d* - STATUS: OK \D*\d*./, '' # Fix for ADX Fan speed reporting
|
38
|
+
cfg.gsub! /\d* deg C/, '' # Fix for ADX temperature reporting
|
37
39
|
cfg.gsub! /([\[]*)1([\]]*)<->([\[]*)2([\]]*)(<->([\[]*)3([\]]*))*/, ''
|
38
40
|
cfg.gsub! /\d{2}\.\d deg-C/, 'XX.X deg-C'
|
39
41
|
if cfg.include? "TEMPERATURE"
|
@@ -50,6 +52,7 @@ class IronWare < Oxidized::Model
|
|
50
52
|
end
|
51
53
|
|
52
54
|
cmd 'show flash' do |cfg|
|
55
|
+
cfg.gsub! /(\d+) bytes/, '' # Fix for ADX flash size
|
53
56
|
comment cfg
|
54
57
|
end
|
55
58
|
|
@@ -67,7 +70,7 @@ class IronWare < Oxidized::Model
|
|
67
70
|
# match expected prompts on both older and newer
|
68
71
|
# versions of IronWare
|
69
72
|
username /^(Please Enter Login Name|Username):/
|
70
|
-
password /^(Please Enter Password
|
73
|
+
password /^(Please Enter Password ?|Password):/
|
71
74
|
end
|
72
75
|
|
73
76
|
#handle pager with enable
|
@@ -8,21 +8,29 @@ class Netgear < Oxidized::Model
|
|
8
8
|
cfg
|
9
9
|
end
|
10
10
|
|
11
|
+
cfg :telnet do
|
12
|
+
username /^User:/
|
13
|
+
end
|
14
|
+
|
11
15
|
cfg :telnet, :ssh do
|
12
16
|
if vars :enable
|
13
17
|
post_login do
|
14
|
-
|
18
|
+
send "enable\n"
|
15
19
|
# Interpret enable: true as meaning we won't be prompted for a password
|
16
20
|
unless vars(:enable).is_a? TrueClass
|
17
21
|
expect /[pP]assword:\s?$/
|
18
|
-
|
22
|
+
send vars(:enable) + "\n"
|
19
23
|
end
|
20
24
|
expect /^.+[#]$/
|
21
25
|
end
|
22
26
|
end
|
23
27
|
post_login 'terminal length 0'
|
24
|
-
|
25
|
-
|
28
|
+
# quit / logout will sometimes prompt the user:
|
29
|
+
#
|
30
|
+
# The system has unsaved changes.
|
31
|
+
# Would you like to save them now? (y/n)
|
32
|
+
#
|
33
|
+
# So it is safer simply to disconnect and not issue a pre_logout command
|
26
34
|
end
|
27
35
|
|
28
36
|
cmd 'show running-config' do |cfg|
|
data/lib/oxidized/model/panos.rb
CHANGED
@@ -39,9 +39,10 @@ class Planet < Oxidized::Model
|
|
39
39
|
|
40
40
|
cfg = cfg.each_line.to_a[0...-2]
|
41
41
|
|
42
|
-
# Strip system time and
|
42
|
+
# Strip system (up)time and temperature
|
43
43
|
cfg = cfg.reject { |line| line.match /System Time\s*:.*/ }
|
44
44
|
cfg = cfg.reject { |line| line.match /System Uptime\s*:.*/ }
|
45
|
+
cfg = cfg.reject { |line| line.match /Temperature\s*:.*/ }
|
45
46
|
|
46
47
|
comment cfg.join
|
47
48
|
end
|
@@ -13,6 +13,11 @@ class PowerConnect < Oxidized::Model
|
|
13
13
|
cfg.each_line.to_a[1..-3].join
|
14
14
|
end
|
15
15
|
|
16
|
+
cmd :secret do |cfg|
|
17
|
+
cfg.gsub! /^username (\S+) password \S+ (.*)/, 'username \1 password <hidden> \2'
|
18
|
+
cfg
|
19
|
+
end
|
20
|
+
|
16
21
|
cmd 'show version' do |cfg|
|
17
22
|
if (@stackable.nil?)
|
18
23
|
@stackable = true if cfg.match /(U|u)nit\s/
|
@@ -30,6 +30,7 @@ class Procurve < Oxidized::Model
|
|
30
30
|
cfg.gsub! /^(snmp-server community).*/, '\\1 <configuration removed>'
|
31
31
|
cfg.gsub! /^(snmp-server host).*/, '\\1 <configuration removed>'
|
32
32
|
cfg.gsub! /^(radius-server host).*/, '\\1 <configuration removed>'
|
33
|
+
cfg.gsub! /^(radius-server key).*/, '\\1 <configuration removed>'
|
33
34
|
cfg
|
34
35
|
end
|
35
36
|
|
@@ -37,6 +38,18 @@ class Procurve < Oxidized::Model
|
|
37
38
|
comment cfg
|
38
39
|
end
|
39
40
|
|
41
|
+
cmd 'show modules' do |cfg|
|
42
|
+
comment cfg
|
43
|
+
end
|
44
|
+
|
45
|
+
cmd 'show interfaces transceiver' do |cfg|
|
46
|
+
comment cfg
|
47
|
+
end
|
48
|
+
|
49
|
+
cmd 'show flash' do |cfg|
|
50
|
+
comment cfg
|
51
|
+
end
|
52
|
+
|
40
53
|
# not supported on all models
|
41
54
|
cmd 'show system-information' do |cfg|
|
42
55
|
cfg = cfg.split("\n")[0..-8].join("\n")
|
@@ -10,11 +10,18 @@ class RouterOS < Oxidized::Model
|
|
10
10
|
comment cfg
|
11
11
|
end
|
12
12
|
|
13
|
-
cmd '/
|
14
|
-
cfg
|
15
|
-
|
16
|
-
|
17
|
-
|
13
|
+
cmd '/system history print' do |cfg|
|
14
|
+
comment cfg
|
15
|
+
end
|
16
|
+
|
17
|
+
post do
|
18
|
+
run_cmd = vars(:remove_secret) ? '/export hide-sensitive' : '/export'
|
19
|
+
cmd run_cmd do |cfg|
|
20
|
+
cfg.gsub! /\x1B\[([0-9]{1,3}((;[0-9]{1,3})*)?)?[m|K]/, '' # strip ANSI colours
|
21
|
+
cfg.gsub! /\\\r\n\s+/, '' # strip new line
|
22
|
+
cfg = cfg.split("\n").select { |line| not line[/^\#\s\w{3}\/\d{2}\/\d{4}.*$/] }
|
23
|
+
cfg.join("\n") + "\n"
|
24
|
+
end
|
18
25
|
end
|
19
26
|
|
20
27
|
cfg :telnet do
|
@@ -0,0 +1,46 @@
|
|
1
|
+
class SGOS < Oxidized::Model
|
2
|
+
|
3
|
+
comment '!- '
|
4
|
+
prompt /\w+>|#/
|
5
|
+
|
6
|
+
expect /--More--/ do |data, re|
|
7
|
+
send ' '
|
8
|
+
data.sub re, ''
|
9
|
+
end
|
10
|
+
|
11
|
+
cmd :all do |cfg|
|
12
|
+
cfg.each_line.to_a[1..-3].join
|
13
|
+
end
|
14
|
+
|
15
|
+
cmd 'show licenses' do |cfg|
|
16
|
+
comment cfg
|
17
|
+
end
|
18
|
+
|
19
|
+
cmd 'show general' do |cfg|
|
20
|
+
comment cfg
|
21
|
+
end
|
22
|
+
|
23
|
+
cmd :secret do |cfg|
|
24
|
+
cfg.gsub! /^(security hashed-enable-password).*/, '\\1 <secret hidden>'
|
25
|
+
cfg.gsub! /^(security hashed-password).*/, '\\1 <secret hidden>'
|
26
|
+
cfg
|
27
|
+
end
|
28
|
+
|
29
|
+
cmd 'show configuration expanded noprompts with-keyrings unencrypted' do |cfg|
|
30
|
+
cfg.gsub! /^(!- Local time).*/,""
|
31
|
+
cfg.gsub! /^(archive-configuration encrypted-password).*/, ""
|
32
|
+
cfg.gsub! /^(download encrypted-password).*/, ""
|
33
|
+
cfg
|
34
|
+
end
|
35
|
+
|
36
|
+
cfg :telnet, :ssh do
|
37
|
+
# preferred way to handle additional passwords
|
38
|
+
if vars :enable
|
39
|
+
post_login do
|
40
|
+
send "enable\n"
|
41
|
+
cmd vars(:enable)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
pre_logout 'exit'
|
45
|
+
end
|
46
|
+
end
|