oxidized 0.26.3 → 0.27.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +20 -4
  3. data/CHANGELOG.md +48 -4
  4. data/Dockerfile +6 -4
  5. data/README.md +2 -2
  6. data/Rakefile +4 -4
  7. data/bin/oxidized +2 -0
  8. data/docs/Configuration.md +40 -0
  9. data/docs/Creating-Models.md +39 -1
  10. data/docs/Model-Notes/JunOS.md +7 -7
  11. data/docs/Model-Notes/LinuxGeneric.md +23 -0
  12. data/docs/Model-Notes/Netgear.md +12 -1
  13. data/docs/Model-Notes/README.md +2 -0
  14. data/docs/Model-Notes/ios.md +29 -0
  15. data/docs/Supported-OS-Types.md +19 -3
  16. data/docs/Troubleshooting.md +66 -0
  17. data/extra/nagios_check_failing_nodes.rb +9 -2
  18. data/extra/oxidized.service +2 -0
  19. data/extra/syslog.rb +28 -23
  20. data/lib/oxidized/cli.rb +10 -6
  21. data/lib/oxidized/config/vars.rb +8 -9
  22. data/lib/oxidized/hook/githubrepo.rb +1 -1
  23. data/lib/oxidized/input/exec.rb +28 -0
  24. data/lib/oxidized/input/telnet.rb +1 -1
  25. data/lib/oxidized/model/adtran.rb +4 -0
  26. data/lib/oxidized/model/airfiber.rb +22 -0
  27. data/lib/oxidized/model/aos.rb +8 -0
  28. data/lib/oxidized/model/aosw.rb +1 -1
  29. data/lib/oxidized/model/c4cmts.rb +1 -1
  30. data/lib/oxidized/model/cambium.rb +1 -0
  31. data/lib/oxidized/model/ciscosmb.rb +0 -5
  32. data/lib/oxidized/model/comware.rb +17 -8
  33. data/lib/oxidized/model/dlink.rb +1 -1
  34. data/lib/oxidized/model/fastiron.rb +66 -0
  35. data/lib/oxidized/model/firelinuxos.rb +41 -0
  36. data/lib/oxidized/model/fortios.rb +5 -0
  37. data/lib/oxidized/model/hpmsm.rb +84 -0
  38. data/lib/oxidized/model/icotera.rb +27 -0
  39. data/lib/oxidized/model/ios.rb +4 -0
  40. data/lib/oxidized/model/ironware.rb +1 -0
  41. data/lib/oxidized/model/junos.rb +2 -2
  42. data/lib/oxidized/model/linuxgeneric.rb +74 -0
  43. data/lib/oxidized/model/model.rb +23 -13
  44. data/lib/oxidized/model/netgear.rb +16 -1
  45. data/lib/oxidized/model/oneos.rb +8 -0
  46. data/lib/oxidized/model/procurve.rb +8 -6
  47. data/lib/oxidized/model/purityos.rb +12 -0
  48. data/lib/oxidized/model/routeros.rb +13 -3
  49. data/lib/oxidized/model/screenos.rb +2 -3
  50. data/lib/oxidized/model/sonicos.rb +46 -0
  51. data/lib/oxidized/model/speedtouch.rb +34 -0
  52. data/lib/oxidized/model/sros.rb +11 -32
  53. data/lib/oxidized/model/voss.rb +5 -2
  54. data/lib/oxidized/model/zynosgs.rb +38 -0
  55. data/lib/oxidized/node.rb +14 -14
  56. data/lib/oxidized/version.rb +2 -2
  57. data/oxidized.gemspec +6 -4
  58. metadata +52 -17
  59. data/lib/oxidized/model/netgearxs716.rb +0 -23
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0909f4f676cb308dde0276c1a0928d04b726d8097d1a8ed4fe0d4da009e13ba7'
4
- data.tar.gz: '0870a0ce2c772f910af40d8ca98afad9e02fa2a303b579fac73193b77cc56983'
3
+ metadata.gz: de700a310982ae6a4234f81f3a61744b3ba7d14e287f5a46199c6b772eecb0e5
4
+ data.tar.gz: 51f3db53dec4314adc9c20c6a02ed2e2e86bc01368305038ba44224967895bb7
5
5
  SHA512:
6
- metadata.gz: 79d5d4b9e4b54550a0a9be30a0d62f1c658266d69dbac26912e29aee4229c29c0b30dfe8ff806220e7ba976e63089d5c125f107cfd731eaed136e80c38e5fa25
7
- data.tar.gz: f5691dc3c0f0efa920356866bd2e08c9e7c1e8ab6ed7c517bdee680600cca0102ba3482b1d2cc3e81090e0ceae39d9946681f4af210e9294129771bec35dd416
6
+ metadata.gz: 49a277becf380a4a7f36f20c53e1933868d8479ad0bf7eb6a1a23efe307e981190db9fd5a274ffb9e2c100c82806d073f4f83f2325e14ba3423f0790d53672d1
7
+ data.tar.gz: c989f9779e4abf6c12649867650616ffd0e8562262a907e89cb015cd7831fa292088fb10e21007e99cc639776d5f78d5c5ac4b9587d5399b40eb017206e59030
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2019-03-05 07:37:06 +0100 using RuboCop version 0.65.0.
3
+ # on 2019-07-27 16:08:27 +0200 using RuboCop version 0.73.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
@@ -8,9 +8,9 @@
8
8
 
9
9
  # Offense count: 67
10
10
  Metrics/AbcSize:
11
- Max: 84
11
+ Max: 82
12
12
 
13
- # Offense count: 19
13
+ # Offense count: 18
14
14
  # Configuration parameters: CountComments, ExcludedMethods.
15
15
  # ExcludedMethods: refine
16
16
  Metrics/BlockLength:
@@ -62,6 +62,22 @@ Naming/MemoizedInstanceVariableName:
62
62
  Exclude:
63
63
  - 'lib/oxidized/string.rb'
64
64
 
65
+ # Offense count: 14
66
+ # Cop supports --auto-correct.
67
+ # Configuration parameters: PreferredName.
68
+ Naming/RescuedExceptionsVariableName:
69
+ Exclude:
70
+ - 'bin/oxidized'
71
+ - 'extra/rest_client.rb'
72
+ - 'extra/syslog.rb'
73
+ - 'lib/oxidized/cli.rb'
74
+ - 'lib/oxidized/config.rb'
75
+ - 'lib/oxidized/node.rb'
76
+ - 'lib/oxidized/nodes.rb'
77
+ - 'lib/oxidized/output/git.rb'
78
+ - 'lib/oxidized/output/gitcrypt.rb'
79
+ - 'lib/oxidized/source/sql.rb'
80
+
65
81
  # Offense count: 1
66
82
  Security/Eval:
67
83
  Exclude:
@@ -88,7 +104,7 @@ Style/DoubleNegation:
88
104
  - 'lib/oxidized/cli.rb'
89
105
  - 'lib/oxidized/hook/exec.rb'
90
106
 
91
- # Offense count: 34
107
+ # Offense count: 35
92
108
  # Cop supports --auto-correct.
93
109
  # Configuration parameters: EnforcedStyle, AllowInnerSlashes.
94
110
  # SupportedStyles: slashes, percent_r, mixed
@@ -2,17 +2,61 @@
2
2
 
3
3
  ## Master
4
4
 
5
+ ## 0.27.0
6
+
7
+ * FEATURE: add automatic restart on failure for systemd (@deajan)
8
+ * FEATURE: add ZynOS GS1900 specific model support (@deajan)
9
+ * FEATURE: add PurityOS model support (@elliot64)
10
+ * FEATURE: add Ubiquiti Airfiber model support (@cchance27)
11
+ * FEATURE: add Icotera support (@funzoneq)
12
+ * FEATURE: include licensing information in aos model (@pozar)
13
+ * FEATURE: include chassis information in sros model (@raunz)
14
+ * FEATURE: add firelinuxos (FirePOWER) model (@rgnv)
15
+ * FEATURE: add sonicos model (@rgnv)
16
+ * FEATURE: add hpmsm model (@timwsuqld)
17
+ * FEATURE: include hardware and product information in oneos model (@raunz)
18
+ * FEATURE: add FastIron model (@ZacharyPuls)
19
+ * FEATURE: add Linuxgeneric model (@davama)
20
+ * FEATURE: include HA status info in fortios model (@raunz)
21
+ * FEATURE: add SpeedTouch model (@raunz)
22
+ * FEATURE: comware added device manuinfo to include serial number (@raunz)
23
+ * BUGFIX: prevent versionning on procurve switches by removing power usage output (@deajan)
24
+ * BUGFIX: improve procurve telnet support for older switches (@deajan)
25
+ * BUGFIX: voss model
26
+ * BUGFIX: cambium model should not consider timestamp for backup as unneeded, and causes diffs (@cchance27)
27
+ * BUGFIX: remove 'sh system' from ciscosmb model (@Exordian)
28
+ * BUGFIX: dlink model didn't support prompts with spaces in the model type (Extreme EAS 200-24p) (@cchance27)
29
+ * BUGFIX: routeros model does not collect configuration via telnet input (@hexdump0x0200)
30
+ * BUGFIX: add dependencies for net-ssh
31
+ * BUGFIX: don't log power module info on procurve model anymore
32
+ * BUGFIX: crash on some recent Ruby versions in the nagios check (@Kegeruneku)
33
+ * BUGFIX: remove stray whitespace in adtran model (@nickhilliard)
34
+ * BUGFIX: if input model returns subclassed string we may overwrite the string with an empty string
35
+ * BUGFIX: updated aosw.rb prompt. addresses issue #1254
36
+ * BUGFIX: update comware model to fix telnet login/password for HPE MSR954 and HPE5130. Issue #1886
37
+ * BUGFIX: filter out IOS configuration/NVRAM modified/changed timestamps to keep output persistent
38
+ * BUGFIX: update screenos model to reduce the amount of lines being stripped from beginning of cfg output
39
+ * BUGFIX: include colon in aosw prompt regexp in case it is a mac address (@raunz)
40
+ * BUGFIX: comware improvement for requesting HP 19x0 switches hidden CLI. Issues #1754 and #1447
41
+ * BUGFIX: fix variable inheritance when subclassing a model
42
+ * MISC: add pgsql support, mechanized and net-tftp to Dockerfile
43
+ * MISC: upgrade slop, net-telnet and rugged
44
+ * MISC: extra secret scrubbing in comware model (@bengels00)
45
+ * MISC: removed snmpd lines from linuxgeneric model
46
+ * MISC: moved show configuration command to the end in junos model (@raunz)
47
+ * MISC: filter pap and chap passwords in ios model (@matejv)
48
+
5
49
  ## 0.26.3
6
50
 
7
- * FIX: regression in git.rb version method where we check if Rugged::Diff has any deltas/patches
51
+ * BUGFIX: regression in git.rb version method where we check if Rugged::Diff has any deltas/patches
8
52
 
9
53
  ## 0.26.2
10
54
 
11
- * FIX: suppress net-ssh 5 deprecation warnings by moving from :paranoid to :verify_host_key
55
+ * BUGFIX: suppress net-ssh 5 deprecation warnings by moving from :paranoid to :verify_host_key
12
56
 
13
57
  ## 0.26.1
14
58
 
15
- * FIX: force file permissions in rubygems
59
+ * BUGFIX: force file permissions in rubygems
16
60
 
17
61
  ## 0.26.0
18
62
 
@@ -24,9 +68,9 @@
24
68
  * FEATURE: add raisecom RAX model (@vitalisator)
25
69
  * FEATURE: add huawei smartax model (@nyash)
26
70
  * FEATURE: add grandstream model
71
+ * BUGFIX: in git comparison we might mistakenly always detect change due to !utf8 vs. utf8 encoding of a char
27
72
  * MISC: prompt updates in siklu, netonix, netscaler models
28
73
  * MISC: minimal supported ruby is now 2.3, net-ssh dependency ~> 5, rubocop ~> 0.65.0
29
- * FIX: in git comparison we might mistakenly always detect change due to !utf8 vs. utf8 encoding of a char
30
74
 
31
75
  ## 0.25.0
32
76
 
data/Dockerfile CHANGED
@@ -1,10 +1,9 @@
1
1
  # Single-stage build of an oxidized container from phusion/baseimage-docker v0.11, derived from Ubuntu 18.04 (Bionic Beaver)
2
2
  FROM phusion/baseimage:0.11
3
- LABEL maintainer="Samer Abdel-Hafez <sam@arahant.net>"
4
3
 
5
4
  # set up dependencies for the build process
6
5
  RUN apt-get -yq update \
7
- && apt-get -yq --no-install-recommends install ruby2.5 ruby2.5-dev libssl1.1 libssl-dev pkg-config make cmake libssh2-1 libssh2-1-dev git g++ libffi-dev ruby-bundler libicu60 libicu-dev libsqlite3-0 libsqlite3-dev libmysqlclient20 libmysqlclient-dev \
6
+ && apt-get -yq --no-install-recommends install ruby2.5 ruby2.5-dev libssl1.1 libssl-dev pkg-config make cmake libssh2-1 libssh2-1-dev git g++ libffi-dev ruby-bundler libicu60 libicu-dev libsqlite3-0 libsqlite3-dev libmysqlclient20 libmysqlclient-dev libpq5 libpq-dev zlib1g-dev \
8
7
  && apt-get clean \
9
8
  && rm -rf /var/lib/apt/lists/*
10
9
 
@@ -12,7 +11,10 @@ RUN apt-get -yq update \
12
11
  RUN gem install aws-sdk slack-api xmpp4r cisco_spark --no-ri --no-rdoc
13
12
 
14
13
  # dependencies for sources
15
- RUN gem install gpgme sequel sqlite3 mysql2 --no-ri --no-rdoc
14
+ RUN gem install gpgme sequel sqlite3 mysql2 pg --no-ri --no-rdoc
15
+
16
+ # dependencies for inputs
17
+ RUN gem install net-tftp net-http-persistent mechanize --no-ri --no-rdoc
16
18
 
17
19
  # build and install oxidized
18
20
  COPY . /tmp/oxidized/
@@ -28,7 +30,7 @@ RUN gem install oxidized-web --no-ri --no-rdoc
28
30
  # clean up
29
31
  WORKDIR /
30
32
  RUN rm -rf /tmp/oxidized
31
- RUN apt-get -yq --purge autoremove ruby-dev pkg-config make cmake ruby-bundler libssl-dev libssh2-1-dev libicu-dev libsqlite3-dev libmysqlclient-dev
33
+ RUN apt-get -yq --purge autoremove ruby-dev pkg-config make cmake ruby-bundler libssl-dev libssh2-1-dev libicu-dev libsqlite3-dev libmysqlclient-dev libpq-dev zlib1g-dev
32
34
 
33
35
  # add runit services
34
36
  COPY extra/oxidized.runit /etc/service/oxidized/run
data/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  Oxidized is a network device configuration backup tool. It's a RANCID replacement!
10
10
 
11
- Light and extensible, Oxidized supports over 90 operating system types.
11
+ Light and extensible, Oxidized supports more than 120 operating system types.
12
12
 
13
13
  Feature highlights:
14
14
 
@@ -104,7 +104,7 @@ Install Ruby 2.3 from [SCL](https://www.softwarecollections.org/en/scls/rhscl/rh
104
104
 
105
105
  ```shell
106
106
  yum install centos-release-scl
107
- yum install rh-ruby23 rh-ruby23-devel
107
+ yum install rh-ruby23 rh-ruby23-ruby-devel
108
108
  scl enable rh-ruby23 bash
109
109
  ```
110
110
 
data/Rakefile CHANGED
@@ -38,10 +38,10 @@ task :version_set do
38
38
  Bundler::GemHelper.instance.gemspec.version = Oxidized::VERSION
39
39
  end
40
40
 
41
- ## desc 'Install gem'
42
- ## task :install => :build do
43
- ## system "sudo -Es sh -c \'umask 022; gem install gems/#{file}\'"
44
- ## end
41
+ # desc 'Install gem'
42
+ # task install: :build do
43
+ # system "sudo -Es sh -c \'umask 022; gem install gems/#{gemfile}\'"
44
+ # end
45
45
 
46
46
  desc 'Remove gems'
47
47
  task :clean do
@@ -10,4 +10,6 @@ rescue StandardError => error
10
10
  warn error.to_s
11
11
  debug = Oxidized.config.debug rescue true
12
12
  raise if debug
13
+
14
+ exit 1
13
15
  end
@@ -80,6 +80,46 @@ vars:
80
80
  auth_methods: [ "none", "publickey", "password", "keyboard-interactive" ]
81
81
  ```
82
82
 
83
+ ## Public Key Authentication with SSH
84
+
85
+ Instead of password-based login, Oxidized can make use of key-based SSH authentication.
86
+
87
+ 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
+
89
+ Global:
90
+
91
+ ```yaml
92
+ vars:
93
+ ssh_keys: "~/.ssh/id_rsa"
94
+ ```
95
+
96
+ Per-Node:
97
+
98
+ ```yaml
99
+ ...
100
+ map:
101
+ name: 0
102
+ model: 1
103
+ vars_map:
104
+ enable: 2
105
+ ssh_keys: 3
106
+ ...
107
+ ```
108
+
109
+ If you are using a non-standard path, especially when copying the private key via a secured channel, make sure that the permissions are set correctly:
110
+
111
+ ```bash
112
+ foo@bar:~$ ls -la ~/.ssh/
113
+ total 20
114
+ drwx------ 2 oxidized oxidized 4096 Mar 13 17:03 .
115
+ drwx------ 5 oxidized oxidized 4096 Mar 13 21:40 ..
116
+ -r-------- 1 oxidized oxidized 103 Mar 13 17:03 authorized_keys
117
+ -rw------- 1 oxidized oxidized 399 Mar 13 17:02 id_ed25519
118
+ -rw-r--r-- 1 oxidized oxidized 94 Mar 13 17:02 id_ed25519.pub
119
+ ```
120
+
121
+ Finally, multiple private keys can be specified as an array of file paths, such as `["~/.ssh/id_rsa", "~/.ssh/id_another_rsa"]`.
122
+
83
123
  ## SSH Proxy Command
84
124
 
85
125
  Oxidized can `ssh` through a proxy as well. To do so we just need to set `ssh_proxy` variable with the proxy host information and optionally set the `ssh_proxy_port` with the SSH port if it is not listening no port 22.
@@ -4,7 +4,40 @@ Oxidized supports a growing list of [operating system types](Supported-OS-Types.
4
4
 
5
5
  A user may wish to extend an existing model to collect the output of additional commands. Oxidized offers smart loading of models in order to facilitate this with ease, without the need to introduce changes to the upstream source code.
6
6
 
7
- This methodology allows local site changes to be preserved during Oxidized version updates / gem updates.
7
+ This methodology allows local site changes to be preserved during Oxidized version updates / gem updates. It also enables convenient local development of new models.
8
+
9
+ ## Creating a new model
10
+
11
+ An Oxidized model, at minimum, requires just three elements:
12
+
13
+ * A model file, this file should be placed in the ~/.config/oxidized directory and named after the target OS type.
14
+ * A class defined within this file with the same name as the file itself that inherits from `Oxidized::Model`, the base model class.
15
+ * At least one command that will be executed and the output of which will be collected by Oxidized.
16
+
17
+ A bare-bone example for a fictional model running the OS type `rootware` could be introduced by creating the file `~/.config/oxidized/rootware.rb`, with the following content:
18
+
19
+ ```ruby
20
+ class RootWare < Oxidized::Model
21
+
22
+ cmd 'show complete-config'
23
+ ```
24
+
25
+ This model, as-is will:
26
+
27
+ * Log into the device and expect the default prompt.
28
+ * Upon matching it, execute the command `show complete-config`
29
+ * Collect the output.
30
+
31
+ It is often useful to, at minimum, define the following additional elements for any newly introduced module:
32
+
33
+ * A regexp for the prompt, via the `prompt` statement.
34
+ * A comment prefix, via the `comment` statement.
35
+ * A regexp for telnet username and password prompts.
36
+ * A mechanism for handling `enable` or similar functionality.
37
+
38
+ The API documentation contains a list of [methods](https://github.com/ytti/oxidized/blob/master/docs/Ruby-API.md#model) that can be used in modules.
39
+
40
+ A more fleshed out example can be found in the `IOS` and `JunOS` models.
8
41
 
9
42
  ## Extending an existing model with a new command
10
43
 
@@ -100,3 +133,8 @@ end
100
133
  cmd :ssh do prepend: true do
101
134
  ... "(code that should run first, before any code in the existing :ssh definition in the model)" ...
102
135
  end
136
+ ```
137
+
138
+ ## Help
139
+
140
+ If you experience difficulties creating a new model, you can often get help by installing an Internet reachable sanitized device and opening a new issue on Github asking for help with creating the model. You should research what is the device vendor name is, the vendor's OS type name is, the exact device model name and firmware version. This information should be included in the issue.
@@ -20,13 +20,13 @@ The commands Oxidized executes are:
20
20
 
21
21
  1. set cli screen-length 0
22
22
  2. set cli screen-width 0
23
- 3. show configuration
24
- 4. show version
25
- 5. show chassis hardware
26
- 6. show system license
27
- 7. show system license keys (ex22|ex33|ex4|ex8|qfx only)
28
- 8. show virtual-chassis (MX960 only)
29
- 9. show chassis fabric reachability
23
+ 3. show version
24
+ 4. show chassis hardware
25
+ 5. show system license
26
+ 6. show system license keys (ex22|ex33|ex4|ex8|qfx only)
27
+ 7. show virtual-chassis (MX960 only)
28
+ 8. show chassis fabric reachability
29
+ 9. show configuration
30
30
 
31
31
  Oxidized can now retrieve your configuration!
32
32
 
@@ -0,0 +1,23 @@
1
+ # LinuxGeneric model notes
2
+
3
+ To expand the usage of this model for more specific needs you can create a file in `~/.config/oxidized/model/linuxgeneric.rb`
4
+
5
+ ```
6
+ require 'oxidized/model/linuxgeneric.rb'
7
+
8
+ class LinuxGeneric
9
+
10
+ cmd :secret, clear: true do |cfg|
11
+ cfg.gsub! /^(default (\S+).* (expires) ).*/, '\\1 <redacted>'
12
+ cfg
13
+ end
14
+
15
+ post do
16
+ cfg = add_comment 'THE MONKEY PATCH'
17
+ cfg += cmd 'firewall-cmd --list-all --zone=public'
18
+ end
19
+ end
20
+ ```
21
+ See [Extending-Model](https://github.com/ytti/oxidized/blob/master/docs/Creating-Models.md#creating-and-extending-models)
22
+
23
+ Back to [Model-Notes](README.md)
@@ -1,6 +1,6 @@
1
1
  # Netgear Configuration
2
2
 
3
- There are several models available with CLI management via telnet (port 60000), but they all behave like one of the following:
3
+ There are several models available with CLI management via telnet (port 60000). To enable telnet configure device with web interface and set 'Maintenance > Troubleshooting > Remote Diagnostics' to 'enable'. All devices behave like one of the following:
4
4
 
5
5
  ## Older models
6
6
 
@@ -71,6 +71,17 @@ switchOldFW:netgear:admin:adminpw::60000
71
71
  switchNewFW:netgear:admin:adminpw:true:60000
72
72
  ```
73
73
 
74
+ Another approach to set parameters:
75
+
76
+ ## oxidized config
77
+
78
+ ```yaml
79
+ netgear:
80
+ vars:
81
+ enable: true
82
+ telnet_port: 60000
83
+ ```
84
+
74
85
  [Reference](https://github.com/ytti/oxidized/pull/1268)
75
86
 
76
87
  Back to [Model-Notes](README.md)
@@ -13,10 +13,12 @@ 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](ios.md)|29 Mar 2019
16
17
  Juniper|[MX/QFX/EX/SRX/J Series](JunOS.md)|18 Jan 2018
17
18
  Netgear|[Netgear](Netgear.md)|11 Apr 2018
18
19
  Nokia|[Nokia ISAM](Nokia.md)|22 Aug 2018
19
20
  Viptela|[Viptela](Viptela.md)|1 Jul 2018
20
21
  Zyxel|[XGS4600 Series](XGS4600-Zyxel.md)|1 Feb 2018
22
+ Linux|[LinuxGeneric](LinuxGeneric.md)|10 Jun 2019
21
23
 
22
24
  If you discover additional caveats or problems please make sure to consult the [GitHub issues for oxidized](https://github.com/ytti/oxidized/issues) known issues.
@@ -0,0 +1,29 @@
1
+ # Cisco IOS Switches
2
+
3
+ ## Include unsaved changes done on a device (commented) with each configuration.
4
+
5
+ Create the file `~/.config/oxidized/model/ios.rb` with the following contents to extend the IOS model:
6
+
7
+ ```ruby
8
+ require 'oxidized/model/ios.rb'
9
+
10
+ class IOS
11
+
12
+ cmd 'show archive config diff' do |cfg|
13
+ # Print diff unless ntp period change or ssl-cert read from file
14
+ cfg.gsub! /^\n/, '' # Remove empty line
15
+ cfg.gsub! /^!\n/, '' # Remove line with only !
16
+ cfg.gsub! /.*ntp clock-period \d+\n/, '' # Remove line with only "ntp clock-period blabla"
17
+ cfg.gsub! /\n/, "\\n" # Escape newline
18
+ cfg.gsub! /crypto pki certificate chain.*certificate .*\.cer\\n/, '' # Remove ssl-cert in start config, as it is read from file, this always differ in running if used.
19
+ cfg.gsub! /crypto pki certificate chain.*-\s*quit\\n/, '' # Remove ssl-cert from running
20
+ cfg.gsub! /\\n/, "\n" # Set newline back
21
+ unless cfg == "!Contextual Config Diffs:\n" # Do not print if only something above was changed
22
+ comment cfg
23
+ end
24
+ end
25
+
26
+ end
27
+ ```
28
+
29
+ Back to [Model-Notes](README.md)
@@ -37,13 +37,16 @@
37
37
  * [BOSS (Baystack Operating System Software)](/lib/oxidized/model/boss.rb)
38
38
  * Brocade
39
39
  * [FabricOS](/lib/oxidized/model/fabricos.rb)
40
- * [Ironware](/lib/oxidized/model/ironware.rb)
40
+ * [FastIron](/lib/oxidized/model/fastiron.rb)
41
+ * [IronWare](/lib/oxidized/model/ironware.rb)
41
42
  * [NOS (Network Operating System)](/lib/oxidized/model/nos.rb)
42
43
  * [Vyatta](/lib/oxidized/model/vyatta.rb)
43
44
  * [6910](/lib/oxidized/model/br6910.rb)
44
45
  * [SLX-OS](/lib/oxidized/model/slxos.rb)
45
46
  * Calix
46
47
  * [AXOS](/lib/oxidized/model/axos.rb)
48
+ * Cambium
49
+ * [Cambium (PMP450 Series)](/lib/oxidized/model/cambium.rb)
47
50
  * Casa
48
51
  * [Casa](/lib/oxidized/model/casa.rb)
49
52
  * Check Point
@@ -56,6 +59,7 @@
56
59
  * [ASA](/lib/oxidized/model/asa.rb)
57
60
  * [AsyncOS](/lib/oxidized/model/asyncos.rb)
58
61
  * [CatOS](/lib/oxidized/model/catos.rb)
62
+ * [FireLinuxOS](lib/oxidized/model/firelinuxos.rb)
59
63
  * [IOS](/lib/oxidized/model/ios.rb)
60
64
  * [IOSXR](/lib/oxidized/model/iosxr.rb)
61
65
  * [NGA](/lib/oxidized/model/cisconga.rb)
@@ -125,12 +129,17 @@
125
129
  * [Procurve](/lib/oxidized/model/procurve.rb)
126
130
  * [BladeSystem (Onboard Administrator)](/lib/oxidized/model/hpebladesystem.rb)
127
131
  * [MSA](/lib/oxidized/model/hpemsa.rb)
132
+ * [MSM (Wireless Controller)](/lib/oxidized/model/hpmsm.rb)
128
133
  * Huawei
129
134
  * [VRP](/lib/oxidized/model/vrp.rb)
130
135
  * [SmartAX series](/lib/oxidized/model/smartax.rb)
136
+ * Icotera
137
+ * [6400 series](/lib/oxidized/model/icotera.rb)
131
138
  * Juniper
132
139
  * [JunOS](/lib/oxidized/model/junos.rb)
133
140
  * [ScreenOS (Netscreen)](/lib/oxidized/model/screenos.rb)
141
+ * Linuxgeneric
142
+ * [CentOS](/lib/oxidized/model/linuxgeneric.rb)
134
143
  * Mellanox
135
144
  * [MLNX-OS](/lib/oxidized/model/mlnxos.rb)
136
145
  * [Voltaire](/lib/oxidized/model/voltaire.rb)
@@ -142,8 +151,7 @@
142
151
  * [MasterOS](/lib/oxidized/model/masteros.rb)
143
152
  * [FiberDriver](/lib/oxidized/model/fiberdriver.rb)
144
153
  * Netgear
145
- * [Netgear](/lib/oxidized/model/netgear.rb)
146
- * [Netgear PROSafe Smart switches](/lib/oxidized/model/netgearxs716.rb)
154
+ * [Netgear switches](/lib/oxidized/model/netgear.rb)
147
155
  * Netonix
148
156
  * [WISP Switch (As Netonix)](/lib/oxidized/model/netonix.rb)
149
157
  * Nokia (formerly TiMetra, Alcatel, Alcatel-Lucent)
@@ -160,6 +168,8 @@
160
168
  * [PANOS](/lib/oxidized/model/panos.rb)
161
169
  * [PLANET SG/SGS Switches](/lib/oxidized/model/planet.rb)
162
170
  * [pfSense](/lib/oxidized/model/pfsense.rb)
171
+ * Pure Storage
172
+ * [PurityOS](/lib/oxidized/model/purityos.rb)
163
173
  * Radware
164
174
  * [AlteonOS](/lib/oxidized/model/alteonos.rb)
165
175
  * Raisecom
@@ -168,8 +178,12 @@
168
178
  * [Quanta / VxWorks 6.6 (1.1.0.8)](/lib/oxidized/model/quantaos.rb)
169
179
  * Siklu
170
180
  * [EtherHaul](/lib/oxidized/model/siklu.rb)
181
+ * SonicWALL
182
+ * [SonicOS](lib/oxidized/model/sonicos.rb)
171
183
  * SNR
172
184
  * [SNR-S300G, S2xxx, S3xxx, S4xxx](/lib/oxidized/model/dcnos.rb)
185
+ * Speedtouch
186
+ * [Thomson Speedtouch](/lib/oxidized/model/speedtouch.rb)
173
187
  * Supermicro
174
188
  * [SSE-G2252, G2252P](/lib/oxidized/model/edgecos.rb)
175
189
  * [SSE-G48-TG4, G24-TG4](/lib/oxidized/model/aricentiss.rb)
@@ -187,6 +201,7 @@
187
201
  * [AirOS](/lib/oxidized/model/airos.rb)
188
202
  * [Edgeos](/lib/oxidized/model/edgeos.rb)
189
203
  * [EdgeSwitch](/lib/oxidized/model/edgeswitch.rb)
204
+ * [AirFiber](/lib/oxidized/model/airfiber.rb)
190
205
  * Watchguard
191
206
  * [Fireware OS](/lib/oxidized/model/firewareos.rb)
192
207
  * Westell
@@ -195,4 +210,5 @@
195
210
  * [Zhone (OLT and MX)](/lib/oxidized/model/zhoneolt.rb)
196
211
  * Zyxel
197
212
  * [ZyNOS](/lib/oxidized/model/zynos.rb)
213
+ * [ZyNOS GS-series variant](/lib/oxidized/model/zynosgs.rb)
198
214
  * [NDMS](/lib/oxidized/model/ndms.rb)