oxidized 0.13.1 → 0.14.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/CHANGELOG.md +8 -1
- data/README.md +21 -4
- data/lib/oxidized/model/asa.rb +17 -1
- data/lib/oxidized/model/catos.rb +36 -0
- data/lib/oxidized/model/iosxr.rb +1 -1
- data/lib/oxidized/model/ironware.rb +1 -0
- data/lib/oxidized/model/supermicro.rb +45 -0
- data/lib/oxidized/model/tmos.rb +9 -7
- data/lib/oxidized/output/git.rb +7 -4
- data/lib/oxidized/version.rb +1 -1
- data/oxidized.gemspec +6 -6
- metadata +12 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 47e10a4f47bf206ef19e583804c53a8574c39119
|
4
|
+
data.tar.gz: 90c5644750d1498582834d7d26d75aedace6dcd8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c002efeb2fb02a633bd8b47d602cd5a82d358bc66caf65606dca2ff91cd1add033e60b47d0838a97c95b55d714b9ff0db1a3b451affada1f50bca4f14754db8e
|
7
|
+
data.tar.gz: 22cf2eef018c432dc64bacecd018461ac65611d0d807b53f535e4254593a359d43d8a48f7563c8dedc45e516bdd30ea89e46330807a9184e194d4d30108d63ea
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
|
+
# 0 14.0
|
2
|
+
- FEATURE: support supermicro swithes (by @funzoneq)
|
3
|
+
- FEATURE: support catos switches
|
4
|
+
- BUGFIX: git+groups+singlerepo (by @PANZERBARON)
|
5
|
+
- BUGFIX: asa, tmos, ironware, ios-xr
|
6
|
+
- BUGFIX: mandate net-ssh 3.0.x, don't accept 3.1 (numerous issues)
|
7
|
+
|
1
8
|
# 0.13.1
|
2
|
-
- BUGFIX: file
|
9
|
+
- BUGFIX: file permissions (Sigh...)
|
3
10
|
|
4
11
|
# 0.13.0
|
5
12
|
- FEATURE: http post for configs (by @jgroom33)
|
data/README.md
CHANGED
@@ -67,6 +67,7 @@ Oxidized is a network device configuration backup tool. It's a RANCID replacemen
|
|
67
67
|
* Cisco
|
68
68
|
* AireOS
|
69
69
|
* ASA
|
70
|
+
* CatOS
|
70
71
|
* IOS
|
71
72
|
* IOSXR
|
72
73
|
* NXOS
|
@@ -112,6 +113,8 @@ Oxidized is a network device configuration backup tool. It's a RANCID replacemen
|
|
112
113
|
* Opengear
|
113
114
|
* Palo Alto
|
114
115
|
* PANOS
|
116
|
+
* Supermicro
|
117
|
+
* Supermicro
|
115
118
|
* Ubiquiti
|
116
119
|
* AirOS
|
117
120
|
* Edgeos
|
@@ -125,7 +128,7 @@ Oxidized is a network device configuration backup tool. It's a RANCID replacemen
|
|
125
128
|
Install all required packages and gems.
|
126
129
|
|
127
130
|
```shell
|
128
|
-
apt-get install ruby ruby-dev libsqlite3-dev libssl-dev pkg-config cmake
|
131
|
+
apt-get install ruby ruby-dev libsqlite3-dev libssl-dev pkg-config cmake libssh2-1-dev
|
129
132
|
gem install oxidized
|
130
133
|
gem install oxidized-script oxidized-web # if you don't install oxidized-web, make sure you remove "rest" from your config
|
131
134
|
```
|
@@ -401,9 +404,23 @@ output:
|
|
401
404
|
git:
|
402
405
|
user: Oxidized
|
403
406
|
email: o@example.com
|
404
|
-
repo:
|
405
|
-
|
406
|
-
|
407
|
+
repo: "/var/lib/oxidized/git-repos/default.git"
|
408
|
+
```
|
409
|
+
|
410
|
+
Oxidized will create a repository for each group in the same directory as the `default.git`. For
|
411
|
+
example:
|
412
|
+
|
413
|
+
``` csv
|
414
|
+
host1:ios:first
|
415
|
+
host2:nxos:second
|
416
|
+
```
|
417
|
+
|
418
|
+
This will generate the following repositories:
|
419
|
+
|
420
|
+
``` bash
|
421
|
+
$ ls /var/lib/oxidized/git-repos
|
422
|
+
|
423
|
+
default.git first.git second.git
|
407
424
|
```
|
408
425
|
|
409
426
|
If you would like to use groups and a single repository, you can force this with the `single_repo` config.
|
data/lib/oxidized/model/asa.rb
CHANGED
@@ -18,7 +18,7 @@ class ASA < Oxidized::Model
|
|
18
18
|
|
19
19
|
cmd 'show version' do |cfg|
|
20
20
|
# avoid commits due to uptime / ixo-router01 up 2 mins 28 secs / ixo-router01 up 1 days 2 hours
|
21
|
-
cfg = cfg.each_line.select { |line| not line.match
|
21
|
+
cfg = cfg.each_line.select { |line| not line.match /(\s+up\s+\d+\s+)|(.*days.*)/ }
|
22
22
|
cfg = cfg.join
|
23
23
|
comment cfg
|
24
24
|
end
|
@@ -30,6 +30,22 @@ class ASA < Oxidized::Model
|
|
30
30
|
cmd 'more system:running-config' do |cfg|
|
31
31
|
cfg = cfg.each_line.to_a[3..-1].join
|
32
32
|
cfg.gsub! /^: [^\n]*\n/, ''
|
33
|
+
# backup any xml referenced in the configuration.
|
34
|
+
anyconnect_profiles = cfg.scan(Regexp.new('(\sdisk0:/.+\.xml)')).flatten
|
35
|
+
anyconnect_profiles.each do |profile|
|
36
|
+
cfg << (comment profile + "\n" )
|
37
|
+
cmd ("more" + profile) do |xml|
|
38
|
+
cfg << (comment xml)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
# if DAP is enabled, also backup dap.xml
|
42
|
+
if cfg.rindex(/dynamic-access-policy-record\s(?!DfltAccessPolicy)/)
|
43
|
+
cfg << (comment "disk0:/dap.xml\n")
|
44
|
+
cmd "more disk0:/dap.xml" do |xml|
|
45
|
+
cfg << (comment xml)
|
46
|
+
puts xml
|
47
|
+
end
|
48
|
+
end
|
33
49
|
cfg
|
34
50
|
end
|
35
51
|
|
@@ -0,0 +1,36 @@
|
|
1
|
+
class Catos < Oxidized::Model
|
2
|
+
|
3
|
+
prompt /^[\w.@-]+> \(enable\) $/
|
4
|
+
comment '# '
|
5
|
+
|
6
|
+
cmd :all do |cfg|
|
7
|
+
cfg.each_line.to_a[1..-2].join
|
8
|
+
end
|
9
|
+
|
10
|
+
cmd 'show system' do |cfg|
|
11
|
+
cfg = cfg.gsub /(\s+)\d+,\d+:\d+:\d+(\s+)/, '\1X\2'
|
12
|
+
comment cfg
|
13
|
+
end
|
14
|
+
|
15
|
+
cmd 'show version' do |cfg|
|
16
|
+
cfg = cfg.gsub /\d+(K)/, 'X\1'
|
17
|
+
cfg = cfg.gsub /^(Uptime is ).*/, '\1X'
|
18
|
+
comment cfg
|
19
|
+
end
|
20
|
+
|
21
|
+
cmd 'show conf all' do |cfg|
|
22
|
+
cfg = cfg.sub /^(#time: ).*/, '\1X'
|
23
|
+
cfg.each_line.drop_while { |line| not line.match /^begin/ }.join
|
24
|
+
end
|
25
|
+
|
26
|
+
cfg :telnet do
|
27
|
+
username /^Username: /
|
28
|
+
password /^Password:/
|
29
|
+
end
|
30
|
+
|
31
|
+
cfg :ssh, :telnet do
|
32
|
+
post_login 'set length 0'
|
33
|
+
pre_logout 'exit'
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
data/lib/oxidized/model/iosxr.rb
CHANGED
@@ -23,6 +23,7 @@ class IronWare < Oxidized::Model
|
|
23
23
|
|
24
24
|
cmd 'show version' do |cfg|
|
25
25
|
cfg.gsub! /(^((.*)[Ss]ystem uptime(.*))$)/, '' #remove unwanted line system uptime
|
26
|
+
cfg.gsub! /(^((.*)[Tt]he system started at(.*))$)/, ''
|
26
27
|
cfg.gsub! /[Uu]p\s?[Tt]ime is .*/,''
|
27
28
|
|
28
29
|
comment cfg
|
@@ -0,0 +1,45 @@
|
|
1
|
+
class Supermicro < Oxidized::Model
|
2
|
+
comment '! '
|
3
|
+
|
4
|
+
cmd :secret do |cfg|
|
5
|
+
cfg.gsub!(/password \d+ (\S+).*/, '<secret removed>')
|
6
|
+
cfg.gsub!(/community (\S+)/, 'community <hidden>')
|
7
|
+
cfg
|
8
|
+
end
|
9
|
+
|
10
|
+
cmd :all do |cfg|
|
11
|
+
cfg.each_line.to_a[2..-2].join
|
12
|
+
end
|
13
|
+
|
14
|
+
cmd 'show running-config'
|
15
|
+
|
16
|
+
cmd 'show access-list tcam-utilization' do |cfg|
|
17
|
+
comment cfg
|
18
|
+
end
|
19
|
+
|
20
|
+
cmd 'show memory' do |cfg|
|
21
|
+
comment cfg
|
22
|
+
end
|
23
|
+
|
24
|
+
cmd 'show system' do |cfg|
|
25
|
+
comment cfg
|
26
|
+
end
|
27
|
+
|
28
|
+
cmd 'show version' do |cfg|
|
29
|
+
comment cfg
|
30
|
+
end
|
31
|
+
|
32
|
+
cmd 'show watchdog' do |cfg|
|
33
|
+
comment cfg
|
34
|
+
end
|
35
|
+
|
36
|
+
cfg :telnet do
|
37
|
+
username /^Username:/
|
38
|
+
password /^Password:/
|
39
|
+
end
|
40
|
+
|
41
|
+
cfg :telnet, :ssh do
|
42
|
+
post_login 'terminal length 0'
|
43
|
+
pre_logout 'exit'
|
44
|
+
end
|
45
|
+
end
|
data/lib/oxidized/model/tmos.rb
CHANGED
@@ -3,18 +3,20 @@ class TMOS < Oxidized::Model
|
|
3
3
|
comment '# '
|
4
4
|
|
5
5
|
cmd :secret do |cfg|
|
6
|
-
cfg.gsub!(
|
7
|
-
cfg.gsub!(
|
8
|
-
cfg.gsub!(
|
9
|
-
cfg.gsub!(/community
|
6
|
+
cfg.gsub!(/^([\s\t]*)secret \S+/, '\1secret <secret removed>')
|
7
|
+
cfg.gsub!(/^([\s\t]*\S*)password \S+/, '\1password <secret removed>')
|
8
|
+
cfg.gsub!(/^([\s\t]*\S*)passphrase \S+/, '\1passphrase <secret removed>')
|
9
|
+
cfg.gsub!(/community \S+/, 'community <secret removed>')
|
10
|
+
cfg.gsub!(/community-name \S+/, 'community-name <secret removed>')
|
11
|
+
cfg.gsub!(/^([\s\t]*\S*)encrypted \S+$/, '\1encrypted <secret removed>')
|
10
12
|
cfg
|
11
13
|
end
|
12
14
|
|
13
|
-
cmd('tmsh show sys version') { |cfg| comment cfg }
|
15
|
+
cmd('tmsh -q show sys version') { |cfg| comment cfg }
|
14
16
|
|
15
|
-
cmd('tmsh show sys software') { |cfg| comment cfg }
|
17
|
+
cmd('tmsh -q show sys software') { |cfg| comment cfg }
|
16
18
|
|
17
|
-
cmd 'tmsh show sys hardware field-fmt' do |cfg|
|
19
|
+
cmd 'tmsh -q show sys hardware field-fmt' do |cfg|
|
18
20
|
cfg.gsub!(/fan-speed (\S+)/, '')
|
19
21
|
cfg.gsub!(/temperature (\S+)/, '')
|
20
22
|
comment cfg
|
data/lib/oxidized/output/git.rb
CHANGED
@@ -70,7 +70,10 @@ class Git < Output
|
|
70
70
|
def version node, group
|
71
71
|
begin
|
72
72
|
repo = @cfg.repo
|
73
|
-
|
73
|
+
path = node
|
74
|
+
if group and @cfg.single_repo?
|
75
|
+
path = "#{group}/#{node}"
|
76
|
+
elsif group
|
74
77
|
repo = File.join File.dirname(repo), group + '.git'
|
75
78
|
end
|
76
79
|
repo = Rugged::Repository.new repo
|
@@ -80,7 +83,7 @@ class Git < Output
|
|
80
83
|
i = -1
|
81
84
|
tab = []
|
82
85
|
walker.each do |commit|
|
83
|
-
if commit.diff(paths: [
|
86
|
+
if commit.diff(paths: [path]).size > 0
|
84
87
|
hash = {}
|
85
88
|
hash[:date] = commit.time.to_s
|
86
89
|
hash[:oid] = commit.oid
|
@@ -100,7 +103,7 @@ class Git < Output
|
|
100
103
|
def get_version node, group, oid
|
101
104
|
begin
|
102
105
|
repo = @cfg.repo
|
103
|
-
if group && group != ''
|
106
|
+
if group && group != '' && !@cfg.single_repo?
|
104
107
|
repo = File.join File.dirname(repo), group + '.git'
|
105
108
|
end
|
106
109
|
repo = Rugged::Repository.new repo
|
@@ -115,7 +118,7 @@ class Git < Output
|
|
115
118
|
begin
|
116
119
|
repo = @cfg.repo
|
117
120
|
diff_commits = nil
|
118
|
-
if group && group != ''
|
121
|
+
if group && group != '' && !@cfg.single_repo?
|
119
122
|
repo = File.join File.dirname(repo), group + '.git'
|
120
123
|
end
|
121
124
|
repo = Rugged::Repository.new repo
|
data/lib/oxidized/version.rb
CHANGED
data/oxidized.gemspec
CHANGED
@@ -21,11 +21,11 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.required_ruby_version = '>= 2.0.0'
|
22
22
|
s.add_runtime_dependency 'asetus', '~> 0.1'
|
23
23
|
s.add_runtime_dependency 'slop', '~> 3.5'
|
24
|
-
s.add_runtime_dependency 'net-ssh', '
|
25
|
-
s.add_runtime_dependency 'rugged', '~> 0.21',
|
26
|
-
s.add_development_dependency 'pry',
|
27
|
-
s.add_development_dependency 'bundler',
|
28
|
-
s.add_development_dependency 'rake',
|
24
|
+
s.add_runtime_dependency 'net-ssh', '>= 3.0.0', '<3.1'
|
25
|
+
s.add_runtime_dependency 'rugged', '~> 0.21', '>= 0.21.4'
|
26
|
+
s.add_development_dependency 'pry', '~> 0'
|
27
|
+
s.add_development_dependency 'bundler', '~> 1.10'
|
28
|
+
s.add_development_dependency 'rake', '~> 10.0'
|
29
29
|
s.add_development_dependency 'minitest', '~> 5.8'
|
30
|
-
s.add_development_dependency 'mocha',
|
30
|
+
s.add_development_dependency 'mocha', '~> 1.1'
|
31
31
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oxidized
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Saku Ytti
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-
|
13
|
+
date: 2016-05-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: asetus
|
@@ -44,22 +44,22 @@ dependencies:
|
|
44
44
|
name: net-ssh
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- - "~>"
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: '3.0'
|
50
47
|
- - ">="
|
51
48
|
- !ruby/object:Gem::Version
|
52
|
-
version: 3.0.
|
49
|
+
version: 3.0.0
|
50
|
+
- - "<"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '3.1'
|
53
53
|
type: :runtime
|
54
54
|
prerelease: false
|
55
55
|
version_requirements: !ruby/object:Gem::Requirement
|
56
56
|
requirements:
|
57
|
-
- - "~>"
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: '3.0'
|
60
57
|
- - ">="
|
61
58
|
- !ruby/object:Gem::Version
|
62
|
-
version: 3.0.
|
59
|
+
version: 3.0.0
|
60
|
+
- - "<"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '3.1'
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
64
|
name: rugged
|
65
65
|
requirement: !ruby/object:Gem::Requirement
|
@@ -207,6 +207,7 @@ files:
|
|
207
207
|
- lib/oxidized/model/aosw.rb
|
208
208
|
- lib/oxidized/model/asa.rb
|
209
209
|
- lib/oxidized/model/c4cmts.rb
|
210
|
+
- lib/oxidized/model/catos.rb
|
210
211
|
- lib/oxidized/model/ciscosmb.rb
|
211
212
|
- lib/oxidized/model/comware.rb
|
212
213
|
- lib/oxidized/model/cumulus.rb
|
@@ -239,6 +240,7 @@ files:
|
|
239
240
|
- lib/oxidized/model/routeros.rb
|
240
241
|
- lib/oxidized/model/saos.rb
|
241
242
|
- lib/oxidized/model/screenos.rb
|
243
|
+
- lib/oxidized/model/supermicro.rb
|
242
244
|
- lib/oxidized/model/timos.rb
|
243
245
|
- lib/oxidized/model/tmos.rb
|
244
246
|
- lib/oxidized/model/vrp.rb
|