oxidized 0.6.0 → 0.7.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 +6 -0
- data/README.md +27 -3
- data/lib/oxidized/input/ssh.rb +1 -1
- data/lib/oxidized/model/panos.rb +26 -0
- data/lib/oxidized/model/screenos.rb +2 -0
- data/lib/oxidized/source/http.rb +54 -0
- data/oxidized.gemspec +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ef4f4fdf11db316eef81011b12feafa631253ba4
|
4
|
+
data.tar.gz: 00cfa0009ac24aee8103c30a5958ddcf1164c2ea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4b55a6e73224b1cf47defa5f2294b333f9cdfc20fa89aa74ef419ac10f6fbfb3d72e15bf65b3018e718daff1c4cbbddf0bfe5af071a0ffd6f305b76cef0e5527
|
7
|
+
data.tar.gz: bdddd0238c911027b927a510269bcf7d34d36e6f58c8df669531ee65ae765f057279e0bfbe26eefb2401f8ecad79cfae52c69d84376b0722fb272aed43b694d2
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
# 0.7.0
|
2
|
+
- FEATURE: support http source (by @laf)
|
3
|
+
- FEATURE: support Palo Alto PANOS (by @rixxxx)
|
4
|
+
- BUGFIX: screenos fixes (by @rixxxx)
|
5
|
+
- BUGFIX: allow 'none' auth in ssh (spotted by @SaldoorMike, needed by ciscosmb+aireos)
|
6
|
+
|
1
7
|
# 0.6.0
|
2
8
|
- FEATURE: support cumulus linux (by @FlorianDoublet)
|
3
9
|
- FEATURE: support HP Comware SMB siwtches (by @sid3windr)
|
data/README.md
CHANGED
@@ -27,6 +27,7 @@ Oxidized is a network device configuration backup tool. It's a RANCID replacment
|
|
27
27
|
* [Privileged mode](#privileged-mode)
|
28
28
|
* [Source: CSV](#source-csv)
|
29
29
|
* [Source: SQLite](#source-sqlite)
|
30
|
+
* [Source: HTTP](#source-http)
|
30
31
|
* [Output: GIT](#output-git)
|
31
32
|
* [Output: File](#output-file)
|
32
33
|
* [Advanced Configuration](#advanced-configuration)
|
@@ -67,6 +68,7 @@ Oxidized is a network device configuration backup tool. It's a RANCID replacment
|
|
67
68
|
* Juniper ScreenOS (Netscreen)
|
68
69
|
* Mikrotik RouterOS
|
69
70
|
* Ubiquiti AirOS
|
71
|
+
* Palo Alto PAN-OS
|
70
72
|
|
71
73
|
|
72
74
|
# Installation
|
@@ -99,7 +101,7 @@ To initialize a default configuration in your home directory ```~/.config/oxidiz
|
|
99
101
|
|
100
102
|
## Source
|
101
103
|
|
102
|
-
Oxidized supports ```CSV``` and ```
|
104
|
+
Oxidized supports ```CSV```, ```SQLite``` and ```HTTP``` as source backends. The CSV backend reads nodes from a rancid compatible router.db file. The SQLite backend will fire queries against a database and map certain fields to model items. The HTTP backend will fire queries against a http/https url. Take a look at the [Cookbook](#cookbook) for more details.
|
103
105
|
|
104
106
|
## Outputs
|
105
107
|
|
@@ -113,7 +115,7 @@ mkdir ~/.config/oxidized/configs
|
|
113
115
|
oxidized
|
114
116
|
```
|
115
117
|
|
116
|
-
Now tell Oxidized where it finds a list of network devices to backup configuration from. You can either use CSV or SQLite as source. To create a
|
118
|
+
Now tell Oxidized where it finds a list of network devices to backup configuration from. You can either use CSV or SQLite as source. To create a CSV source add the following snippet:
|
117
119
|
|
118
120
|
```
|
119
121
|
source:
|
@@ -220,6 +222,28 @@ source:
|
|
220
222
|
enable: enable
|
221
223
|
```
|
222
224
|
|
225
|
+
### Source: HTTP
|
226
|
+
|
227
|
+
One object per device.
|
228
|
+
|
229
|
+
```
|
230
|
+
source:
|
231
|
+
default: http
|
232
|
+
http:
|
233
|
+
url: https://url/api
|
234
|
+
scheme: https
|
235
|
+
delimiter: !ruby/regexp /:/
|
236
|
+
map:
|
237
|
+
name: hostname
|
238
|
+
model: os
|
239
|
+
username: username
|
240
|
+
password: password
|
241
|
+
vars_map:
|
242
|
+
enable: enable
|
243
|
+
headers:
|
244
|
+
X-Auth-Token: 'somerandomstring'
|
245
|
+
```
|
246
|
+
|
223
247
|
### Output: File
|
224
248
|
|
225
249
|
Parent directory needs to be created manually, one file per device, with most recent running config.
|
@@ -313,7 +337,7 @@ The following objects exist in Oxidized.
|
|
313
337
|
* input - method to acquire config, loaded dynamically as needed (Also default in config file)
|
314
338
|
* output - method to store config, loaded dynamically as needed (Also default in config file)
|
315
339
|
* prompt - prompt used for node (Also default in config file, can be specified in model too)
|
316
|
-
* 'sql' and '
|
340
|
+
* 'sql', 'csv' and 'http' (supports any format with single entry per line, like router.db)
|
317
341
|
|
318
342
|
## Model
|
319
343
|
* lists commands to gather from given device model
|
data/lib/oxidized/input/ssh.rb
CHANGED
@@ -24,7 +24,7 @@ module Oxidized
|
|
24
24
|
@ssh = Net::SSH.start @node.ip, @node.auth[:username],
|
25
25
|
:password => @node.auth[:password], :timeout => CFG.timeout,
|
26
26
|
:paranoid => secure,
|
27
|
-
:auth_methods => %w(publickey password),
|
27
|
+
:auth_methods => %w(none publickey password),
|
28
28
|
:number_of_password_prompts => 0
|
29
29
|
unless @exec
|
30
30
|
shell_open @ssh
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class PanOS < Oxidized::Model
|
2
|
+
|
3
|
+
# PaloAlto PAN-OS model #
|
4
|
+
|
5
|
+
comment '! '
|
6
|
+
|
7
|
+
prompt /^[\w.\@:\(\)-]+>\s?$/
|
8
|
+
|
9
|
+
cmd :all do |cfg|
|
10
|
+
cfg.each_line.to_a[2..-3].join
|
11
|
+
end
|
12
|
+
|
13
|
+
cmd 'show system info' do |cfg|
|
14
|
+
cfg.gsub! /^(up)?time:\ .*\n/, ''
|
15
|
+
comment cfg
|
16
|
+
end
|
17
|
+
|
18
|
+
cmd 'show config running' do |cfg|
|
19
|
+
cfg
|
20
|
+
end
|
21
|
+
|
22
|
+
cfg :ssh do
|
23
|
+
post_login 'set cli pager off'
|
24
|
+
pre_logout 'exit'
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Oxidized
|
2
|
+
class HTTP < Source
|
3
|
+
def initialize
|
4
|
+
@cfg = CFG.source.http
|
5
|
+
super
|
6
|
+
end
|
7
|
+
|
8
|
+
def setup
|
9
|
+
if @cfg.url.empty?
|
10
|
+
raise NoConfig, 'no source http url config, edit ~/.config/oxidized/config'
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
require "net/http"
|
15
|
+
require "uri"
|
16
|
+
require "json"
|
17
|
+
|
18
|
+
def load
|
19
|
+
nodes = []
|
20
|
+
uri = URI.parse(@cfg.url)
|
21
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
22
|
+
http.use_ssl = true if uri.scheme == 'https'
|
23
|
+
|
24
|
+
# map headers
|
25
|
+
headers = {}
|
26
|
+
@cfg.headers.each do |header, value|
|
27
|
+
headers[header] = value
|
28
|
+
end
|
29
|
+
|
30
|
+
request = Net::HTTP::Get.new(uri.request_uri, headers)
|
31
|
+
|
32
|
+
response = http.request(request)
|
33
|
+
data = JSON.parse(response.body)
|
34
|
+
data.each do |line|
|
35
|
+
next if line.empty?
|
36
|
+
# map node parameters
|
37
|
+
keys = {}
|
38
|
+
@cfg.map.each do |key, position|
|
39
|
+
keys[key.to_sym] = line[position]
|
40
|
+
end
|
41
|
+
keys[:model] = map_model keys[:model] if keys.key? :model
|
42
|
+
|
43
|
+
# map node specific vars, empty value is considered as nil
|
44
|
+
vars = {}
|
45
|
+
@cfg.vars_map.each { |key, position| vars[key.to_sym] = line[position].to_s.empty? ? nil : line[position] }
|
46
|
+
keys[:vars] = vars unless vars.empty?
|
47
|
+
|
48
|
+
nodes << keys
|
49
|
+
end
|
50
|
+
nodes
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
data/oxidized.gemspec
CHANGED
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.7.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-
|
12
|
+
date: 2015-05-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: asetus
|
@@ -130,6 +130,7 @@ files:
|
|
130
130
|
- lib/oxidized/model/nos.rb
|
131
131
|
- lib/oxidized/model/nxos.rb
|
132
132
|
- lib/oxidized/model/outputs.rb
|
133
|
+
- lib/oxidized/model/panos.rb
|
133
134
|
- lib/oxidized/model/powerconnect.rb
|
134
135
|
- lib/oxidized/model/procurve.rb
|
135
136
|
- lib/oxidized/model/routeros.rb
|
@@ -145,6 +146,7 @@ files:
|
|
145
146
|
- lib/oxidized/output/git.rb
|
146
147
|
- lib/oxidized/output/output.rb
|
147
148
|
- lib/oxidized/source/csv.rb
|
149
|
+
- lib/oxidized/source/http.rb
|
148
150
|
- lib/oxidized/source/source.rb
|
149
151
|
- lib/oxidized/source/sql.rb
|
150
152
|
- lib/oxidized/string.rb
|