oxidized 0.5.0 → 0.6.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 +12 -1
- data/README.md +1 -0
- data/Rakefile +6 -1
- data/lib/oxidized/input/ssh.rb +3 -1
- data/lib/oxidized/model/comware.rb +11 -0
- data/lib/oxidized/model/cumulus.rb +76 -0
- data/lib/oxidized/model/eos.rb +1 -0
- data/lib/oxidized/model/ironware.rb +35 -2
- data/lib/oxidized/model/model.rb +1 -0
- data/lib/oxidized/model/powerconnect.rb +3 -4
- data/lib/oxidized/model/screenos.rb +5 -2
- data/lib/oxidized/output/git.rb +14 -8
- data/lib/oxidized/source/csv.rb +1 -1
- data/oxidized.gemspec +2 -2
- metadata +10 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 08d1ddb80997414fda90c9aaa4c1cda7d572b092
|
4
|
+
data.tar.gz: 2f11578926ac497672dda0293231b53e90bf3f6e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59f6306c9dd3e6d586ed21340f1844647d343692e00a6a17a5f841d1254ba26643b2747f1c66599cd567d8b03e3f44c2689aabca705be000f0d93f82c99b8546
|
7
|
+
data.tar.gz: 2352a0a428db0b54f971adf502c640142aed75b48bd0199fb380f2507bf49fb2d95cc13aeffd03db2c6d6f5760b5461fc9e222a28fc7b0f52ffdc3704d85c4b1
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
# 0.6.0
|
2
|
+
- FEATURE: support cumulus linux (by @FlorianDoublet)
|
3
|
+
- FEATURE: support HP Comware SMB siwtches (by @sid3windr)
|
4
|
+
- FEATURE: remove secret additions (by @rodecker)
|
5
|
+
- FEATURE: option to put all groups in single repo (by @ytti)
|
6
|
+
- FEATURE: expand path in source: csv: (so that ~/foo/bar works) (by @ytti)
|
7
|
+
- BUGFIX: screenos fixes (by @rixxxx)
|
8
|
+
- BUGFIX: ironware fixes (by @FlorianDoublet)
|
9
|
+
- BUGFIX: powerconnect fixes (by @sid3windr)
|
10
|
+
- BUGFIX: don't ask interactive password in new net/ssh (by @ytti)
|
11
|
+
|
1
12
|
# 0.5.0
|
2
13
|
- FEATURE: Mikrotik RouterOS model (by @emjemj)
|
3
14
|
- FEATURE: add support for Cisco VSS (by @MrRJ45)
|
@@ -22,7 +33,7 @@
|
|
22
33
|
- BUGFIX: allow node to be removed while it is being collected
|
23
34
|
- BUGFIX: if model returns non string value, return empty string
|
24
35
|
- BUGFIX: better prompt for Arista EOS model (by @rodecker)
|
25
|
-
- BUGFIX: improved configuration handling for Arista EOS model (by @rodecker)
|
36
|
+
- BUGFIX: improved configuration handling for Arista EOS model (by @rodecker)
|
26
37
|
|
27
38
|
# 0.3.0
|
28
39
|
- FEATURE: *FIXME* bunch of stuff I did for richih, docs needed
|
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -40,7 +40,12 @@ task :clean do
|
|
40
40
|
FileUtils.rm_rf 'gems'
|
41
41
|
end
|
42
42
|
|
43
|
+
desc 'Tag the release'
|
44
|
+
task :tag do
|
45
|
+
system "git tag #{gemspec.version}"
|
46
|
+
end
|
47
|
+
|
43
48
|
desc 'Push to rubygems'
|
44
|
-
task :push do
|
49
|
+
task :push => :tag do
|
45
50
|
system "gem push gems/#{file}"
|
46
51
|
end
|
data/lib/oxidized/input/ssh.rb
CHANGED
@@ -23,7 +23,9 @@ module Oxidized
|
|
23
23
|
@log = File.open(CFG.input.debug?.to_s + '-ssh', 'w') if CFG.input.debug?
|
24
24
|
@ssh = Net::SSH.start @node.ip, @node.auth[:username],
|
25
25
|
:password => @node.auth[:password], :timeout => CFG.timeout,
|
26
|
-
:paranoid => secure
|
26
|
+
:paranoid => secure,
|
27
|
+
:auth_methods => %w(publickey password),
|
28
|
+
:number_of_password_prompts => 0
|
27
29
|
unless @exec
|
28
30
|
shell_open @ssh
|
29
31
|
begin
|
@@ -21,6 +21,17 @@ class Comware < Oxidized::Model
|
|
21
21
|
end
|
22
22
|
|
23
23
|
cfg :telnet, :ssh do
|
24
|
+
# enable command-line mode on SMB comware switches (HP V1910, V1920)
|
25
|
+
# autodetection is hard, because the 'summary' command is paged, and
|
26
|
+
# the pager cannot be disabled before _cmdline-mode on.
|
27
|
+
if vars :comware_cmdline
|
28
|
+
post_login do
|
29
|
+
send "_cmdline-mode on\n"
|
30
|
+
send "y\n"
|
31
|
+
send vars(:comware_cmdline) + "\n"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
24
35
|
post_login 'screen-length disable'
|
25
36
|
post_login 'undo terminal monitor'
|
26
37
|
pre_logout 'quit'
|
@@ -0,0 +1,76 @@
|
|
1
|
+
class Cumulus < Oxidized::Model
|
2
|
+
|
3
|
+
prompt /^((\w*)@(.*)([>#]\s)+)$/
|
4
|
+
comment '# '
|
5
|
+
|
6
|
+
|
7
|
+
#add a comment in the final conf
|
8
|
+
def add_comment comment
|
9
|
+
"\n###### #{comment} ######\n"
|
10
|
+
end
|
11
|
+
|
12
|
+
cmd :all do |cfg|
|
13
|
+
cfg.each_line.to_a[1..-2].join
|
14
|
+
end
|
15
|
+
|
16
|
+
#show the persistent configuration
|
17
|
+
pre do
|
18
|
+
cfg = add_comment 'THE HOSTNAME'
|
19
|
+
cfg += cmd 'cat /etc/hostname'
|
20
|
+
|
21
|
+
cfg += add_comment 'THE HOSTS'
|
22
|
+
cfg += cmd 'cat /etc/hosts'
|
23
|
+
|
24
|
+
cfg += add_comment 'THE INTERFACES'
|
25
|
+
cfg += cmd 'cat /etc/network/interfaces'
|
26
|
+
|
27
|
+
cfg += add_comment 'RESOLV.CONF'
|
28
|
+
cfg += cmd 'cat /etc/resolv.conf'
|
29
|
+
|
30
|
+
cfg += add_comment 'NTP.CONF'
|
31
|
+
cfg += cmd 'cat /etc/ntp.conf'
|
32
|
+
|
33
|
+
cfg += add_comment 'QUAGGA DAEMONS'
|
34
|
+
cfg += cmd 'cat /etc/quagga/daemons'
|
35
|
+
|
36
|
+
cfg += add_comment 'QUAGGA ZEBRA'
|
37
|
+
cfg += cmd 'cat /etc/quagga/zebra.conf'
|
38
|
+
|
39
|
+
cfg += add_comment 'QUAGGA BGP'
|
40
|
+
cfg += cmd 'cat /etc/quagga/bgpd.conf'
|
41
|
+
|
42
|
+
cfg += add_comment 'QUAGGA OSPF'
|
43
|
+
cfg += cmd 'cat /etc/quagga/ospfd.conf'
|
44
|
+
|
45
|
+
cfg += add_comment 'QUAGGA OSPF6'
|
46
|
+
cfg += cmd 'cat /etc/quagga/ospf6d.conf'
|
47
|
+
|
48
|
+
cfg += add_comment 'MOTD'
|
49
|
+
cfg += cmd 'cat /etc/motd'
|
50
|
+
|
51
|
+
cfg += add_comment 'PASSWD'
|
52
|
+
cfg += cmd 'cat /etc/passwd'
|
53
|
+
|
54
|
+
cfg += add_comment ' SWITCHD'
|
55
|
+
cfg += cmd 'cat /etc/cumulus/switchd.conf'
|
56
|
+
|
57
|
+
cfg += add_comment 'ACL'
|
58
|
+
cfg += cmd 'iptables -L'
|
59
|
+
|
60
|
+
cfg += add_comment 'VERSION'
|
61
|
+
cfg += cmd 'cat /etc/cumulus/etc.replace/os-release'
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
cfg :telnet do
|
67
|
+
username /^Username:/
|
68
|
+
password /^Password:/
|
69
|
+
end
|
70
|
+
|
71
|
+
cfg :telnet, :ssh do
|
72
|
+
pre_logout 'exit'
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
end
|
data/lib/oxidized/model/eos.rb
CHANGED
@@ -13,6 +13,7 @@ class EOS < Oxidized::Model
|
|
13
13
|
cmd :secret do |cfg|
|
14
14
|
cfg.gsub! /^(snmp-server community).*/, '\\1 <configuration removed>'
|
15
15
|
cfg.gsub! /username (\S+) privilege (\d+) (\S+).*/, '<secret hidden>'
|
16
|
+
cfg.gsub! /^(enable secret).*/, '\\1 <configuration removed>'
|
16
17
|
cfg
|
17
18
|
end
|
18
19
|
|
@@ -1,9 +1,22 @@
|
|
1
1
|
class IronWare < Oxidized::Model
|
2
2
|
|
3
|
+
prompt /^.+[>#]\s?$/
|
3
4
|
comment '! '
|
5
|
+
|
6
|
+
#to handle pager without enable
|
7
|
+
#expect /^((.*)--More--(.*))$/ do |data, re|
|
8
|
+
# send ' '
|
9
|
+
# data.sub re, ''
|
10
|
+
#end
|
11
|
+
|
12
|
+
|
13
|
+
#to remove backspace (if handle pager without enable)
|
14
|
+
#expect /^((.*)[\b](.*))$/ do |data, re|
|
15
|
+
# data.sub re, ''
|
16
|
+
#end
|
4
17
|
|
5
18
|
cmd :all do |cfg|
|
6
|
-
cfg.each_line.to_a[1..-
|
19
|
+
cfg.each_line.to_a[1..-2].join
|
7
20
|
end
|
8
21
|
|
9
22
|
cmd 'show running-config' do |cfg|
|
@@ -12,11 +25,21 @@ class IronWare < Oxidized::Model
|
|
12
25
|
end
|
13
26
|
|
14
27
|
cmd 'show version' do |cfg|
|
28
|
+
cfg.gsub! /(^((.*)system uptime(.*))$)/, '' #remove unwanted line system uptime
|
15
29
|
comment cfg
|
16
30
|
end
|
17
31
|
|
18
32
|
cmd 'show chassis' do |cfg|
|
19
33
|
cfg.gsub! "\xFF", '' # ugly hack - avoids JSON.dump utf-8 breakage on 1.9..
|
34
|
+
cfg.gsub! /(^((.*)Current temp(.*))$)/, '' #remove unwanted lines current temperature
|
35
|
+
comment cfg
|
36
|
+
end
|
37
|
+
|
38
|
+
cmd 'show flash' do |cfg|
|
39
|
+
comment cfg
|
40
|
+
end
|
41
|
+
|
42
|
+
cmd 'show module' do |cfg|
|
20
43
|
comment cfg
|
21
44
|
end
|
22
45
|
|
@@ -25,9 +48,19 @@ class IronWare < Oxidized::Model
|
|
25
48
|
password /^Password:/
|
26
49
|
end
|
27
50
|
|
51
|
+
#handle pager with enable
|
28
52
|
cfg :telnet, :ssh do
|
53
|
+
if vars :enable
|
54
|
+
post_login do
|
55
|
+
send "enable\n"
|
56
|
+
send vars(:enable) + "\n"
|
57
|
+
end
|
58
|
+
end
|
29
59
|
post_login 'skip-page-display'
|
60
|
+
post_login 'terminal length 0'
|
30
61
|
pre_logout 'logout'
|
62
|
+
pre_logout 'exit'
|
63
|
+
pre_logout 'exit'
|
31
64
|
end
|
32
65
|
|
33
|
-
end
|
66
|
+
end
|
data/lib/oxidized/model/model.rb
CHANGED
@@ -4,7 +4,7 @@ class PowerConnect < Oxidized::Model
|
|
4
4
|
|
5
5
|
comment '! '
|
6
6
|
|
7
|
-
expect /^\s
|
7
|
+
expect /^\s*--More--\s+.*$/ do |data, re|
|
8
8
|
send ' '
|
9
9
|
data.sub re, ''
|
10
10
|
end
|
@@ -50,8 +50,8 @@ class PowerConnect < Oxidized::Model
|
|
50
50
|
skip_block = false
|
51
51
|
cfg.each_line do |line|
|
52
52
|
if line.match /Up\sTime|Temperature|Power Supplies/i
|
53
|
-
# For 34xx, 54xx, 55xx, and 8024F we should skip this block (terminated by a blank line)
|
54
|
-
skip_block = true if @model =~ /^(34|35)(24|48)$|^(54|55)(24|48)$|^8024$/
|
53
|
+
# For 34xx, 35xx, 54xx, 55xx, 62xx and 8024F we should skip this block (terminated by a blank line)
|
54
|
+
skip_block = true if @model =~ /^(34|35)(24|48)$|^(54|55)(24|48)$|^(62)(24|48)$|^8024$/
|
55
55
|
end
|
56
56
|
# If we have lines to skip do this until we reach and empty line
|
57
57
|
if skip_block
|
@@ -64,5 +64,4 @@ class PowerConnect < Oxidized::Model
|
|
64
64
|
out << "\n"
|
65
65
|
end
|
66
66
|
|
67
|
-
|
68
67
|
end
|
@@ -4,7 +4,7 @@ class ScreenOS < Oxidized::Model
|
|
4
4
|
|
5
5
|
comment '! '
|
6
6
|
|
7
|
-
prompt
|
7
|
+
prompt /^[\w.:\(\)-]+->\s?$/
|
8
8
|
|
9
9
|
cmd :all do |cfg|
|
10
10
|
cfg.each_line.to_a[2..-2].join
|
@@ -33,7 +33,10 @@ class ScreenOS < Oxidized::Model
|
|
33
33
|
|
34
34
|
cfg :telnet, :ssh do
|
35
35
|
post_login 'set console page 0'
|
36
|
-
pre_logout
|
36
|
+
pre_logout do
|
37
|
+
send "exit\n"
|
38
|
+
send "n"
|
39
|
+
end
|
37
40
|
end
|
38
41
|
|
39
42
|
end
|
data/lib/oxidized/output/git.rb
CHANGED
@@ -68,17 +68,23 @@ class Git < Output
|
|
68
68
|
def update repo, file, data
|
69
69
|
return if data.empty?
|
70
70
|
if @opt[:group]
|
71
|
-
|
71
|
+
if @cfg.single_repo?
|
72
|
+
file = File.join @opt[:group], file
|
73
|
+
else
|
74
|
+
repo = File.join File.dirname(repo), @opt[:group] + '.git'
|
75
|
+
end
|
72
76
|
end
|
73
|
-
repo = Rugged::Repository.new repo
|
74
|
-
update_repo repo, file, data, @msg, @user, @email
|
75
|
-
rescue Rugged::OSError, Rugged::RepositoryError => open_error
|
76
77
|
begin
|
77
|
-
Rugged::Repository.
|
78
|
-
|
79
|
-
|
78
|
+
repo = Rugged::Repository.new repo
|
79
|
+
update_repo repo, file, data, @msg, @user, @email
|
80
|
+
rescue Rugged::OSError, Rugged::RepositoryError => open_error
|
81
|
+
begin
|
82
|
+
Rugged::Repository.init_at repo, :bare
|
83
|
+
rescue => create_error
|
84
|
+
raise GitError, "first '#{open_error.message}' was raised while opening git repo, then '#{create_error.message}' was while trying to create git repo"
|
85
|
+
end
|
86
|
+
retry
|
80
87
|
end
|
81
|
-
retry
|
82
88
|
end
|
83
89
|
|
84
90
|
def update_repo repo, file, data, msg, user, email
|
data/lib/oxidized/source/csv.rb
CHANGED
data/oxidized.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'oxidized'
|
3
|
-
s.version = '0.
|
3
|
+
s.version = '0.6.0'
|
4
4
|
s.licenses = %w( Apache-2.0 )
|
5
5
|
s.platform = Gem::Platform::RUBY
|
6
6
|
s.authors = [ 'Saku Ytti', 'Samer Abdel-Hafez' ]
|
@@ -17,5 +17,5 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.add_runtime_dependency 'asetus', '~> 0.1'
|
18
18
|
s.add_runtime_dependency 'slop', '~> 3.5'
|
19
19
|
s.add_runtime_dependency 'net-ssh', '~> 2.8'
|
20
|
-
s.add_runtime_dependency 'rugged', '~> 0.21.4'
|
20
|
+
s.add_runtime_dependency 'rugged', '~> 0.21', '>= 0.21.4'
|
21
21
|
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.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Saku Ytti
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-04-
|
12
|
+
date: 2015-04-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: asetus
|
@@ -58,6 +58,9 @@ dependencies:
|
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0.21'
|
63
|
+
- - ">="
|
61
64
|
- !ruby/object:Gem::Version
|
62
65
|
version: 0.21.4
|
63
66
|
type: :runtime
|
@@ -65,6 +68,9 @@ dependencies:
|
|
65
68
|
version_requirements: !ruby/object:Gem::Requirement
|
66
69
|
requirements:
|
67
70
|
- - "~>"
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0.21'
|
73
|
+
- - ">="
|
68
74
|
- !ruby/object:Gem::Version
|
69
75
|
version: 0.21.4
|
70
76
|
description: software to fetch configuration from network devices and store them
|
@@ -110,6 +116,7 @@ files:
|
|
110
116
|
- lib/oxidized/model/asa.rb
|
111
117
|
- lib/oxidized/model/ciscosmb.rb
|
112
118
|
- lib/oxidized/model/comware.rb
|
119
|
+
- lib/oxidized/model/cumulus.rb
|
113
120
|
- lib/oxidized/model/eos.rb
|
114
121
|
- lib/oxidized/model/fabricos.rb
|
115
122
|
- lib/oxidized/model/fortios.rb
|
@@ -164,7 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
164
171
|
version: '0'
|
165
172
|
requirements: []
|
166
173
|
rubyforge_project: oxidized
|
167
|
-
rubygems_version: 2.
|
174
|
+
rubygems_version: 2.2.2
|
168
175
|
signing_key:
|
169
176
|
specification_version: 4
|
170
177
|
summary: feeble attempt at rancid
|