oxidized 0.27.0 → 0.28.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/.github/workflows/publishdocker.yml +13 -0
- data/.rubocop.yml +10 -1
- data/.rubocop_todo.yml +12 -4
- data/CHANGELOG.md +646 -409
- data/docs/Configuration.md +4 -1
- data/docs/Hooks.md +1 -0
- data/docs/Model-Notes/{ios.md → IOS.md} +1 -1
- data/docs/Model-Notes/LinuxGeneric.md +4 -3
- data/docs/Model-Notes/README.md +1 -1
- data/docs/Model-Notes/Viptela.md +1 -1
- data/docs/Ruby-API.md +13 -1
- data/docs/Supported-OS-Types.md +14 -1
- data/lib/oxidized/input/http.rb +14 -4
- data/lib/oxidized/input/ssh.rb +1 -1
- data/lib/oxidized/input/telnet.rb +1 -1
- data/lib/oxidized/model/aos7.rb +2 -2
- data/lib/oxidized/model/aosw.rb +5 -0
- data/lib/oxidized/model/ciscosmb.rb +13 -2
- data/lib/oxidized/model/cnos.rb +33 -0
- data/lib/oxidized/model/cumulus.rb +1 -4
- data/lib/oxidized/model/edgecos.rb +13 -3
- data/lib/oxidized/model/eos.rb +1 -0
- data/lib/oxidized/model/fortios.rb +6 -6
- data/lib/oxidized/model/gcombnps.rb +4 -4
- data/lib/oxidized/model/ibos.rb +55 -0
- data/lib/oxidized/model/ios.rb +1 -1
- data/lib/oxidized/model/ironware.rb +1 -1
- data/lib/oxidized/model/nsxconfig.rb +22 -0
- data/lib/oxidized/model/nsxfirewall.rb +22 -0
- data/lib/oxidized/model/os10.rb +46 -0
- data/lib/oxidized/model/procurve.rb +2 -2
- data/lib/oxidized/model/qtech.rb +41 -0
- data/lib/oxidized/model/routeros.rb +3 -3
- data/lib/oxidized/model/sonicos.rb +5 -0
- data/lib/oxidized/model/telco.rb +24 -0
- data/lib/oxidized/model/xos.rb +2 -2
- data/lib/oxidized/node.rb +2 -2
- data/lib/oxidized/nodes.rb +1 -1
- data/lib/oxidized/output/git.rb +1 -1
- data/lib/oxidized/version.rb +2 -2
- data/oxidized.gemspec +2 -2
- metadata +16 -8
data/docs/Configuration.md
CHANGED
@@ -16,6 +16,8 @@ input:
|
|
16
16
|
debug: true
|
17
17
|
ssh:
|
18
18
|
secure: false
|
19
|
+
http:
|
20
|
+
ssl_verify: true
|
19
21
|
```
|
20
22
|
|
21
23
|
## Privileged mode
|
@@ -82,7 +84,7 @@ vars:
|
|
82
84
|
|
83
85
|
## Public Key Authentication with SSH
|
84
86
|
|
85
|
-
Instead of password-based login, Oxidized can make use of key-based SSH authentication.
|
87
|
+
Instead of password-based login, Oxidized can make use of key-based SSH authentication.
|
86
88
|
|
87
89
|
You can tell Oxidized to use one or more private keys globally, or specify the key to be used on a per-node basis. The latter can be done by mapping the `ssh_keys` variable through the active source.
|
88
90
|
|
@@ -306,5 +308,6 @@ resolve_dns: false
|
|
306
308
|
## Environment variables
|
307
309
|
|
308
310
|
You can use some environment variables to change default root directories values.
|
311
|
+
|
309
312
|
* `OXIDIZED_HOME` may be used to set oxidized configuration directory, which defaults to `~/.config/oxidized`
|
310
313
|
* `OXIDIZED_LOGS` may be used to set oxidzied logs and crash directories root, which default to `~/.config/oxidized`
|
data/docs/Hooks.md
CHANGED
@@ -168,6 +168,7 @@ hooks:
|
|
168
168
|
token: SLACK_BOT_TOKEN
|
169
169
|
channel: "#network-changes"
|
170
170
|
```
|
171
|
+
|
171
172
|
The token parameter is a "legacy token" and is generated [Here](https://api.slack.com/custom-integrations/legacy-tokens).
|
172
173
|
|
173
174
|
Optionally you can disable snippets and post a formatted message, for instance linking to a commit in a git repo. Named parameters `%{node}`, `%{group}`, `%{model}` and `%{commitref}` are available.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# Cisco IOS Switches
|
2
2
|
|
3
|
-
## Include unsaved changes done on a device (commented) with each configuration
|
3
|
+
## Include unsaved changes done on a device (commented) with each configuration
|
4
4
|
|
5
5
|
Create the file `~/.config/oxidized/model/ios.rb` with the following contents to extend the IOS model:
|
6
6
|
|
@@ -2,22 +2,23 @@
|
|
2
2
|
|
3
3
|
To expand the usage of this model for more specific needs you can create a file in `~/.config/oxidized/model/linuxgeneric.rb`
|
4
4
|
|
5
|
-
```
|
5
|
+
```ruby
|
6
6
|
require 'oxidized/model/linuxgeneric.rb'
|
7
7
|
|
8
8
|
class LinuxGeneric
|
9
9
|
|
10
10
|
cmd :secret, clear: true do |cfg|
|
11
|
-
cfg.gsub! /^(default (\S+).* (expires) ).*/, '\\1 <redacted>'
|
11
|
+
cfg.gsub! /^(default (\S+).* (expires) ).*/, '\\1 <redacted>'
|
12
12
|
cfg
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
post do
|
16
16
|
cfg = add_comment 'THE MONKEY PATCH'
|
17
17
|
cfg += cmd 'firewall-cmd --list-all --zone=public'
|
18
18
|
end
|
19
19
|
end
|
20
20
|
```
|
21
|
+
|
21
22
|
See [Extending-Model](https://github.com/ytti/oxidized/blob/master/docs/Creating-Models.md#creating-and-extending-models)
|
22
23
|
|
23
24
|
Back to [Model-Notes](README.md)
|
data/docs/Model-Notes/README.md
CHANGED
@@ -13,7 +13,7 @@ Arista|[EOS](EOS.md)|05 Feb 2018
|
|
13
13
|
Cumulus|[Cumulus](Cumulus.md)|11 Jun 2018
|
14
14
|
Huawei|[VRP](VRP-Huawei.md)|17 Nov 2017
|
15
15
|
Huawei|[SmartAX series](SmartAX-Huawei.md)|21 Jan 2019
|
16
|
-
Cisco IOS|[IOS](
|
16
|
+
Cisco IOS|[IOS](IOS.md)|29 Mar 2019
|
17
17
|
Juniper|[MX/QFX/EX/SRX/J Series](JunOS.md)|18 Jan 2018
|
18
18
|
Netgear|[Netgear](Netgear.md)|11 Apr 2018
|
19
19
|
Nokia|[Nokia ISAM](Nokia.md)|22 Aug 2018
|
data/docs/Model-Notes/Viptela.md
CHANGED
data/docs/Ruby-API.md
CHANGED
@@ -6,7 +6,19 @@ The following objects exist in Oxidized.
|
|
6
6
|
|
7
7
|
* gets config from nodes
|
8
8
|
* must implement 'connect', 'get', 'cmd'
|
9
|
-
* 'ssh', 'telnet', 'ftp',
|
9
|
+
* 'ssh', 'telnet', 'ftp', 'tftp', 'http' implemented
|
10
|
+
|
11
|
+
#### http
|
12
|
+
* Communicates with a device over http/https
|
13
|
+
* Configurable variables from within model @username, @password, @headers.
|
14
|
+
* @username,@password are used in a Basic Authentication method.
|
15
|
+
* @headers is a Hash of key value pairs of headers to pass along with the request.
|
16
|
+
* Within the sources config under input you define a YAML stanza like the below, this will tell Oxidized to validate certificates on the request
|
17
|
+
```yaml
|
18
|
+
input:
|
19
|
+
http:
|
20
|
+
ssl_verify: true
|
21
|
+
```
|
10
22
|
|
11
23
|
## Output
|
12
24
|
|
data/docs/Supported-OS-Types.md
CHANGED
@@ -49,6 +49,8 @@
|
|
49
49
|
* [Cambium (PMP450 Series)](/lib/oxidized/model/cambium.rb)
|
50
50
|
* Casa
|
51
51
|
* [Casa](/lib/oxidized/model/casa.rb)
|
52
|
+
* Centec Networks
|
53
|
+
* [CNOS](/lib/oxidized/model/cnos.rb)
|
52
54
|
* Check Point
|
53
55
|
* [GaiaOS](/lib/oxidized/model/gaiaos.rb)
|
54
56
|
* Ciena
|
@@ -88,6 +90,7 @@
|
|
88
90
|
* [PowerConnect](/lib/oxidized/model/powerconnect.rb)
|
89
91
|
* [AOSW](/lib/oxidized/model/aosw.rb)
|
90
92
|
* [DellX](/lib/oxidized/model/dellx.rb)
|
93
|
+
* [Dell EMC Networking OS10](/lib/oxidized/model/os10.rb)
|
91
94
|
* D-Link
|
92
95
|
* [D-Link](/lib/oxidized/model/dlink.rb)
|
93
96
|
* ECI Telecom
|
@@ -105,6 +108,9 @@
|
|
105
108
|
* [TMOS](/lib/oxidized/model/tmos.rb)
|
106
109
|
* Fiberstore
|
107
110
|
* [S3800](/lib/oxidized/model/gcombnps.rb)
|
111
|
+
* [S3900](/lib/oxidized/model/edgecos.rb)
|
112
|
+
* [S5800](/lib/oxidized/model/cnos.rb)
|
113
|
+
* [S5850](/lib/oxidized/model/cnos.rb)
|
108
114
|
* Firebrick
|
109
115
|
* [FBxxxx](/lib/oxidized/model/firebrick.rb)
|
110
116
|
* Force10
|
@@ -174,12 +180,14 @@
|
|
174
180
|
* [AlteonOS](/lib/oxidized/model/alteonos.rb)
|
175
181
|
* Raisecom
|
176
182
|
* [Raisecom](/lib/oxidized/model/raisecom.rb)
|
183
|
+
* QTECH
|
184
|
+
* [QSW-2800, QSW-3400, QSW-3450, QSW-3500](/lib/oxidized/model/qtech.rb)
|
177
185
|
* Quanta
|
178
186
|
* [Quanta / VxWorks 6.6 (1.1.0.8)](/lib/oxidized/model/quantaos.rb)
|
179
187
|
* Siklu
|
180
188
|
* [EtherHaul](/lib/oxidized/model/siklu.rb)
|
181
189
|
* SonicWALL
|
182
|
-
|
190
|
+
* [SonicOS](lib/oxidized/model/sonicos.rb)
|
183
191
|
* SNR
|
184
192
|
* [SNR-S300G, S2xxx, S3xxx, S4xxx](/lib/oxidized/model/dcnos.rb)
|
185
193
|
* Speedtouch
|
@@ -191,6 +199,8 @@
|
|
191
199
|
* [SBM-GEM-X2C, GEM-X2C+, GEM-X3S+, XEM-X10SM](/lib/oxidized/model/aricentiss.rb)
|
192
200
|
* Symantec
|
193
201
|
* [Blue Coat ProxySG / Security Gateway OS (SGOS)](/lib/oxidized/model/sgos.rb)
|
202
|
+
* Telco Systems
|
203
|
+
* [Telco Systems T-Marc 3306](/lib/oxidized/model/telco.rb)
|
194
204
|
* Trango Systems
|
195
205
|
* [Trango](/lib/oxidized/model/trango.rb)
|
196
206
|
* TPLink
|
@@ -202,6 +212,9 @@
|
|
202
212
|
* [Edgeos](/lib/oxidized/model/edgeos.rb)
|
203
213
|
* [EdgeSwitch](/lib/oxidized/model/edgeswitch.rb)
|
204
214
|
* [AirFiber](/lib/oxidized/model/airfiber.rb)
|
215
|
+
* VMWare
|
216
|
+
* [NSX Edge (configuration)](/lib/oxidized/model/nsxconfig.rb)
|
217
|
+
* [NSX Edge (firewall rules)](/lib/oxidized/model/nsxfirewall.rb)
|
205
218
|
* Watchguard
|
206
219
|
* [Fireware OS](/lib/oxidized/model/firewareos.rb)
|
207
220
|
* Westell
|
data/lib/oxidized/input/http.rb
CHANGED
@@ -9,6 +9,9 @@ module Oxidized
|
|
9
9
|
def connect(node)
|
10
10
|
@node = node
|
11
11
|
@secure = false
|
12
|
+
@username = nil
|
13
|
+
@password = nil
|
14
|
+
@headers = {}
|
12
15
|
@log = File.open(Oxidized::Config::Log + "/#{@node.ip}-http", "w") if Oxidized.config.input.debug?
|
13
16
|
@node.model.cfg["http"].each { |cb| instance_exec(&cb) }
|
14
17
|
|
@@ -45,10 +48,17 @@ module Oxidized
|
|
45
48
|
|
46
49
|
def get_http(path)
|
47
50
|
schema = @secure ? "https://" : "http://"
|
48
|
-
uri = URI
|
49
|
-
|
50
|
-
|
51
|
-
|
51
|
+
uri = URI("#{schema}#{@node.ip}#{path}")
|
52
|
+
req = Net::HTTP::Get.new(uri)
|
53
|
+
req.basic_auth @username, @password unless @username.nil?
|
54
|
+
@headers.each do |header, value|
|
55
|
+
req.add_field(header, value)
|
56
|
+
end
|
57
|
+
ssl_verify = Oxidized.config.input.http.ssl_verify? ? OpenSSL::SSL::VERIFY_PEER : OpenSSL::SSL::VERIFY_NONE
|
58
|
+
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https", verify_mode: ssl_verify) do |http|
|
59
|
+
http.request(req)
|
60
|
+
end
|
61
|
+
res.body
|
52
62
|
end
|
53
63
|
|
54
64
|
def log(str)
|
data/lib/oxidized/input/ssh.rb
CHANGED
@@ -65,7 +65,7 @@ module Oxidized
|
|
65
65
|
disconnect_cli
|
66
66
|
# if disconnect does not disconnect us, give up after timeout
|
67
67
|
Timeout.timeout(Oxidized.config.timeout) { @ssh.loop }
|
68
|
-
rescue Errno::ECONNRESET, Net::SSH::Disconnect, IOError
|
68
|
+
rescue Errno::ECONNRESET, Net::SSH::Disconnect, IOError
|
69
69
|
ensure
|
70
70
|
@log.close if Oxidized.config.input.debug?
|
71
71
|
(@ssh.close rescue true) unless @ssh.closed?
|
@@ -61,7 +61,7 @@ module Oxidized
|
|
61
61
|
def disconnect
|
62
62
|
disconnect_cli
|
63
63
|
@telnet.close
|
64
|
-
rescue Errno::ECONNRESET
|
64
|
+
rescue Errno::ECONNRESET
|
65
65
|
ensure
|
66
66
|
@log.close if Oxidized.config.input.debug?
|
67
67
|
(@telnet.close rescue true) unless @telnet.sock.closed?
|
data/lib/oxidized/model/aos7.rb
CHANGED
data/lib/oxidized/model/aosw.rb
CHANGED
@@ -58,6 +58,11 @@ class AOSW < Oxidized::Model
|
|
58
58
|
rstrip_cfg comment cfg
|
59
59
|
end
|
60
60
|
|
61
|
+
cmd 'show license passphrase' do |cfg|
|
62
|
+
cfg = "" if cfg.match /(Invalid input detected at '\^' marker|Parse error)/ # Don't show for unsupported devices (IAP and MAS)
|
63
|
+
rstrip_cfg comment cfg
|
64
|
+
end
|
65
|
+
|
61
66
|
cmd 'show running-config' do |cfg|
|
62
67
|
out = []
|
63
68
|
cfg.each_line do |line|
|
@@ -26,6 +26,7 @@ class CiscoSMB < Oxidized::Model
|
|
26
26
|
end
|
27
27
|
|
28
28
|
cmd 'show version' do |cfg|
|
29
|
+
cfg.gsub! /uptime is\ .+/, '<uptime removed>'
|
29
30
|
comment cfg
|
30
31
|
end
|
31
32
|
|
@@ -44,8 +45,18 @@ class CiscoSMB < Oxidized::Model
|
|
44
45
|
end
|
45
46
|
|
46
47
|
cfg :telnet, :ssh do
|
47
|
-
username
|
48
|
-
password /^\r?Password
|
48
|
+
username /User ?[nN]ame:/
|
49
|
+
password /^\r?Password:/
|
50
|
+
|
51
|
+
post_login do
|
52
|
+
if vars(:enable) == true
|
53
|
+
cmd 'enable'
|
54
|
+
elsif vars(:enable)
|
55
|
+
cmd 'enable', /^\r?Password:$/
|
56
|
+
cmd vars(:enable)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
49
60
|
post_login 'terminal datadump' # Disable pager
|
50
61
|
post_login 'terminal width 0'
|
51
62
|
post_login 'terminal len 0'
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# model for Centec Networks CNOS based switches
|
2
|
+
class CNOS < Oxidized::Model
|
3
|
+
comment '! '
|
4
|
+
|
5
|
+
cmd :all do |cfg|
|
6
|
+
cfg.each_line.to_a[0..-2].join
|
7
|
+
end
|
8
|
+
|
9
|
+
cmd 'show running-config' do |cfg|
|
10
|
+
cfg.gsub!(/(snmp-server community )(\S+)/, '\1<hidden>')
|
11
|
+
cfg.gsub!(/key type private.+key string end/m, '<private key hidden>')
|
12
|
+
cfg
|
13
|
+
end
|
14
|
+
|
15
|
+
cmd 'show version' do |cfg|
|
16
|
+
cfg.gsub! /^(.* uptime is ).*\n/, '\1'
|
17
|
+
comment cfg
|
18
|
+
end
|
19
|
+
|
20
|
+
cmd 'show transceiver' do |cfg|
|
21
|
+
comment cfg
|
22
|
+
end
|
23
|
+
|
24
|
+
cfg :telnet do
|
25
|
+
username /^Username:/
|
26
|
+
password /^Password:/
|
27
|
+
end
|
28
|
+
|
29
|
+
cfg :telnet, :ssh do
|
30
|
+
post_login 'terminal length 0'
|
31
|
+
pre_logout 'exit'
|
32
|
+
end
|
33
|
+
end
|
@@ -33,9 +33,6 @@ class Cumulus < Oxidized::Model
|
|
33
33
|
cfg += add_comment 'NTP.CONF'
|
34
34
|
cfg += cmd 'cat /etc/ntp.conf'
|
35
35
|
|
36
|
-
cfg += add_comment 'IP Routes'
|
37
|
-
cfg += cmd 'netstat -rn'
|
38
|
-
|
39
36
|
cfg += add_comment 'SNMP settings'
|
40
37
|
cfg += cmd 'cat /etc/snmp/snmpd.conf'
|
41
38
|
|
@@ -73,7 +70,7 @@ class Cumulus < Oxidized::Model
|
|
73
70
|
cfg += cmd 'cat /etc/cumulus/datapath/traffic.conf'
|
74
71
|
|
75
72
|
cfg += add_comment 'ACL'
|
76
|
-
cfg += cmd '
|
73
|
+
cfg += cmd 'cat /etc/cumulus/acl/policy.conf'
|
77
74
|
|
78
75
|
cfg += add_comment 'VERSION'
|
79
76
|
cfg += cmd 'cat /etc/cumulus/etc.replace/os-release'
|
@@ -8,14 +8,14 @@ class EdgeCOS < Oxidized::Model
|
|
8
8
|
end
|
9
9
|
|
10
10
|
cmd :all do |cfg|
|
11
|
-
cfg.each_line.to_a[
|
11
|
+
cfg.each_line.to_a[0..-2].join
|
12
12
|
end
|
13
13
|
|
14
14
|
cmd 'show running-config'
|
15
15
|
|
16
16
|
cmd 'show system' do |cfg|
|
17
|
-
cfg.gsub!
|
18
|
-
cfg.gsub!
|
17
|
+
cfg.gsub! /^.*\sUp Time\s*:.*\n/i, ''
|
18
|
+
cfg.gsub! /^(.*\sTemperature \d*:).*\n/i, '\\1 <removed>'
|
19
19
|
comment cfg
|
20
20
|
end
|
21
21
|
|
@@ -27,6 +27,16 @@ class EdgeCOS < Oxidized::Model
|
|
27
27
|
comment cfg
|
28
28
|
end
|
29
29
|
|
30
|
+
cmd 'show interfaces transceiver' do |cfg|
|
31
|
+
cfg.gsub! /(\d\d)!/, '\\1 ' # alarm indicators of DDM thresholds
|
32
|
+
cfg.gsub! /^(\s*Temperature\s*:).*/, '\1 <hidden>'
|
33
|
+
cfg.gsub! /^(\s*Vcc\s*:).*/, '\1 <hidden>'
|
34
|
+
cfg.gsub! /^(\s*Bias Current\s*:).*/, '\1 <hidden>'
|
35
|
+
cfg.gsub! /^(\s*TX Power\s*:).*/, '\1 <hidden>'
|
36
|
+
cfg.gsub! /^(\s*RX Power\s*:).*/, '\1 <hidden>'
|
37
|
+
comment cfg
|
38
|
+
end
|
39
|
+
|
30
40
|
cfg :telnet do
|
31
41
|
username /^Username:/
|
32
42
|
password /^Password:/
|
data/lib/oxidized/model/eos.rb
CHANGED
@@ -15,6 +15,7 @@ class EOS < Oxidized::Model
|
|
15
15
|
cfg.gsub! /(password \d+) (\S+).*/, '\\1 <secret hidden>'
|
16
16
|
cfg.gsub! /^(enable secret).*/, '\\1 <configuration removed>'
|
17
17
|
cfg.gsub! /^(tacacs-server key \d+).*/, '\\1 <configuration removed>'
|
18
|
+
cfg.gsub! /( {6}key) (\h+ 7) (\h+).*/, '\\1 <secret hidden>'
|
18
19
|
cfg
|
19
20
|
end
|
20
21
|
|
@@ -20,16 +20,16 @@ class FortiOS < Oxidized::Model
|
|
20
20
|
# A number of other statements also contains sensitive strings
|
21
21
|
cfg.gsub! /(set (?:passwd|password|key|group-password|auth-password-l1|auth-password-l2|rsso|history0|history1)) .+/, '\\1 <configuration removed>'
|
22
22
|
cfg.gsub! /(set md5-key [0-9]+) .+/, '\\1 <configuration removed>'
|
23
|
-
cfg.gsub! /(set private-key ).*?-+END (ENCRYPTED|RSA) PRIVATE KEY
|
24
|
-
cfg.gsub! /(set ca ).*?-+END CERTIFICATE
|
25
|
-
cfg.gsub! /(set csr ).*?-+END CERTIFICATE REQUEST
|
26
|
-
cfg.gsub! /(Cluster uptime:).*/, '\\1 <stripped>'
|
23
|
+
cfg.gsub! /(set private-key ).*?-+END (ENCRYPTED|RSA|OPENSSH) PRIVATE KEY-+\n?"$/m, '\\1<configuration removed>'
|
24
|
+
cfg.gsub! /(set ca ).*?-+END CERTIFICATE-+"$/m, '\\1<configuration removed>'
|
25
|
+
cfg.gsub! /(set csr ).*?-+END CERTIFICATE REQUEST-+"$/m, '\\1<configuration removed>'
|
27
26
|
cfg
|
28
27
|
end
|
29
28
|
|
30
29
|
cmd 'get system status' do |cfg|
|
31
|
-
@vdom_enabled = cfg.
|
32
|
-
cfg.gsub!
|
30
|
+
@vdom_enabled = cfg.match /Virtual domain configuration: (enable|multiple)/
|
31
|
+
cfg.gsub! /(System time:).*/, '\\1 <stripped>'
|
32
|
+
cfg.gsub! /(Cluster uptime:).*/, '\\1 <stripped>'
|
33
33
|
cfg.gsub! /(Virus-DB|Extended DB|IPS-DB|IPS-ETDB|APP-DB|INDUSTRIAL-DB|Botnet DB|IPS Malicious URL Database).*/, '\\1 <db version stripped>'
|
34
34
|
comment cfg
|
35
35
|
end
|
@@ -5,11 +5,11 @@ class GcomBNPS < Oxidized::Model
|
|
5
5
|
# tested with:
|
6
6
|
# - S5330 (aka Fiberstore S3800)
|
7
7
|
|
8
|
-
prompt /^\r?([\w.@()-]+?(\(1
|
8
|
+
prompt /^\r?([\w.@()-]+?(\(1-\d+ chars\))?[#>:]\s?)$/ # also match SSH password promt (post_login commands are sent after the first prompt)
|
9
9
|
comment '! '
|
10
10
|
|
11
11
|
# alternative to handle the SSH login, but this breaks telnet
|
12
|
-
# expect /^Password\(1
|
12
|
+
# expect /^Password\(1-\d+ chars\):/ do |data|
|
13
13
|
# send @node.auth[:password] + "\n"
|
14
14
|
# ''
|
15
15
|
# end
|
@@ -66,8 +66,8 @@ class GcomBNPS < Oxidized::Model
|
|
66
66
|
end
|
67
67
|
|
68
68
|
cfg :telnet do
|
69
|
-
username /^Username\(1
|
70
|
-
password /^Password\(1
|
69
|
+
username /^Username\(1-\d+ chars\):/
|
70
|
+
password /^Password\(1-\d+ chars\):/
|
71
71
|
end
|
72
72
|
|
73
73
|
cfg :ssh do
|
@@ -0,0 +1,55 @@
|
|
1
|
+
class IBOS < Oxidized::Model
|
2
|
+
# IBOS model, Intelligent Broadband Operating System (iBOS)
|
3
|
+
# Used in Waystream (previously PacketFront) Routers and Switches
|
4
|
+
|
5
|
+
prompt /^([\w.@()-]+[#>]\s?)$/
|
6
|
+
comment '! '
|
7
|
+
|
8
|
+
cmd :all do |cfg|
|
9
|
+
cfg.each_line.to_a[1..-2].join
|
10
|
+
end
|
11
|
+
|
12
|
+
cmd :secret do |cfg|
|
13
|
+
# snmp-group version 2c
|
14
|
+
# notify 10.1.1.1 community public trap
|
15
|
+
cfg.gsub! /^ notify (\S+) community (\S+) (.*)/, ' notify \\1 community <hidden> \\3'
|
16
|
+
|
17
|
+
# snmp-group version 2c
|
18
|
+
# community public read-only view all
|
19
|
+
cfg.gsub! /^ community (\S+) (.*)/, ' community <hidden> \\2'
|
20
|
+
|
21
|
+
# radius server 10.1.1.1 secret public
|
22
|
+
cfg.gsub! /^radius server (\S+) secret (\S+)(.*)/, 'radius server \\1 secret <hidden> \\3'
|
23
|
+
end
|
24
|
+
|
25
|
+
cmd 'show version' do |cfg|
|
26
|
+
cfg.gsub! /.*uptime is.*/, ''
|
27
|
+
comment cfg
|
28
|
+
end
|
29
|
+
|
30
|
+
cmd 'show running-config' do |cfg|
|
31
|
+
cfg = cfg.each_line.to_a[0..-1].join
|
32
|
+
cfg.gsub! /.*!volatile.*/, ''
|
33
|
+
cfg
|
34
|
+
end
|
35
|
+
|
36
|
+
cfg :telnet do
|
37
|
+
username /^username:\s/
|
38
|
+
password /^\r?password:\s/
|
39
|
+
end
|
40
|
+
|
41
|
+
cfg :telnet, :ssh do
|
42
|
+
# preferred way to handle additional passwords
|
43
|
+
post_login do
|
44
|
+
if vars(:enable) == true
|
45
|
+
cmd "enable"
|
46
|
+
elsif vars(:enable)
|
47
|
+
cmd "enable", /^[pP]assword:/
|
48
|
+
cmd vars(:enable)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
post_login 'terminal no pager'
|
52
|
+
post_login 'terminal width 65535'
|
53
|
+
pre_logout 'exit'
|
54
|
+
end
|
55
|
+
end
|