oxidized 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|