oxidized-script 0.3.1 → 0.4.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 +3 -0
- data/README.md +1 -0
- data/lib/oxidized/script/cli.rb +25 -3
- data/lib/oxidized/script/script.rb +2 -0
- data/oxidized-script.gemspec +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e78a905befb0130e399d70d444d00433dd1d023e
|
4
|
+
data.tar.gz: 61e31fef4d16f550b35afb45dabc2b8200560540
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe0c5a45af71afe30b680ac7e145333d4eddbe7bcd58e232ad0165fcae2711470df794f391d9dc56b05f195ed76add855f91cfacb34fb2117004366da85e1ab6
|
7
|
+
data.tar.gz: 52101b291edad1ec64c78e6a92926de01a949f58fcf8a63ded5fbc40950be2047320d1c1a4b1e08f9f0bb845d69f77092941c22c14d9084a4c2de5a6187cc1f3
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
# 0.3.2
|
2
|
+
- FEATURE on --ostype to get a list of nodes that match a particular OS Type (junos, routeros, ios) (by InsaneSplash)
|
3
|
+
|
1
4
|
# 0.3.1
|
2
5
|
- FEATURE on --dryrun to get a list of nodes without running a command (by @nertwork)
|
3
6
|
- BUGFIX: errors with large config files running in ruby threads - forking instead (by @nertwork)
|
data/README.md
CHANGED
@@ -38,6 +38,7 @@ Name Default RD Protocols Interfaces
|
|
38
38
|
[fisakytt@lan-login1 ~]% oxs --help
|
39
39
|
Usage: oxs [options] hostname [command]
|
40
40
|
-m, --model host model (ios, junos, etc), otherwise discovered from Oxidized source
|
41
|
+
-o, --ostype OS Type (ios, junos, etc)
|
41
42
|
-x, --commands commands file to be sent
|
42
43
|
-u, --username username to use
|
43
44
|
-p, --password password to use
|
data/lib/oxidized/script/cli.rb
CHANGED
@@ -9,7 +9,7 @@ module Oxidized
|
|
9
9
|
class NothingToDo < ScriptError; end
|
10
10
|
|
11
11
|
def run
|
12
|
-
if @group or @regex
|
12
|
+
if @group or @regex or @ostype
|
13
13
|
nodes = get_hosts
|
14
14
|
counter = @threads.to_i
|
15
15
|
Signal.trap("CLD") { counter += 1 }
|
@@ -57,14 +57,14 @@ module Oxidized
|
|
57
57
|
@cmd_class.run :args=>@args, :opts=>@opts, :host=>@host, :cmd=>@cmd
|
58
58
|
exit 0
|
59
59
|
else
|
60
|
-
if @group or @regex
|
60
|
+
if @group or @regex or @ostype
|
61
61
|
@cmd = @args.shift
|
62
62
|
else
|
63
63
|
@host = @args.shift
|
64
64
|
@cmd = @args.shift if @args
|
65
65
|
end
|
66
66
|
@oxs = nil
|
67
|
-
raise NothingToDo, 'no host given' if not @host and not @group and not @regex
|
67
|
+
raise NothingToDo, 'no host given' if not @host and not @group and not @ostype and not @regex
|
68
68
|
if @dryrun
|
69
69
|
puts get_hosts
|
70
70
|
exit
|
@@ -77,6 +77,7 @@ module Oxidized
|
|
77
77
|
slop = Slop.new(:help=>true)
|
78
78
|
slop.banner 'Usage: oxs [options] hostname [command]'
|
79
79
|
slop.on 'm=', '--model', 'host model (ios, junos, etc), otherwise discovered from Oxidized source'
|
80
|
+
slop.on 'o=', '--ostype', 'OS Type (ios, junos, etc)'
|
80
81
|
slop.on 'x=', '--commands', 'commands file to be sent'
|
81
82
|
slop.on 'u=', '--username', 'username to use'
|
82
83
|
slop.on 'p=', '--password', 'password to use'
|
@@ -102,6 +103,7 @@ module Oxidized
|
|
102
103
|
end
|
103
104
|
slop.parse
|
104
105
|
@group = slop[:group]
|
106
|
+
@ostype = slop[:ostype]
|
105
107
|
@threads = slop[:threads]
|
106
108
|
@verbose = slop[:verbose]
|
107
109
|
@dryrun= slop[:dryrun]
|
@@ -151,9 +153,17 @@ module Oxidized
|
|
151
153
|
nodes_group = run_group @group
|
152
154
|
nodes_regex = run_regex @regex
|
153
155
|
return nodes_group & nodes_regex
|
156
|
+
elsif @group and @ostype
|
157
|
+
puts "running list for hosts in group: #{@group} and matching: #{@ostype}" if @verbose
|
158
|
+
nodes_group = run_group @group
|
159
|
+
nodes_ostype = run_ostype @ostype
|
160
|
+
return nodes_group & nodes_ostype
|
154
161
|
elsif @regex
|
155
162
|
puts 'running list for hosts matching: ' + @regex if @verbose
|
156
163
|
return run_regex @regex
|
164
|
+
elsif @ostype
|
165
|
+
puts 'running list for hosts matching ostype: ' + @ostype if @verbose
|
166
|
+
return run_ostype @ostype
|
157
167
|
else
|
158
168
|
puts 'running list for hosts in group: ' + @group if @verbose
|
159
169
|
return run_group @group
|
@@ -170,6 +180,18 @@ module Oxidized
|
|
170
180
|
out
|
171
181
|
end
|
172
182
|
|
183
|
+
def run_ostype ostype
|
184
|
+
Oxidized.mgr = Manager.new
|
185
|
+
out = []
|
186
|
+
Nodes.new.each do |node|
|
187
|
+
ostype.downcase # need to make sure they are both in lowercase
|
188
|
+
nodemodel = node.model.to_s.downcase # need to make sure they are both in lowercase
|
189
|
+
next unless nodemodel =~ /#{ostype}/
|
190
|
+
out << node.name
|
191
|
+
end
|
192
|
+
out
|
193
|
+
end
|
194
|
+
|
173
195
|
def run_regex regex
|
174
196
|
Oxidized.mgr = Manager.new
|
175
197
|
out = []
|
@@ -37,6 +37,7 @@ module Oxidized
|
|
37
37
|
# @param [Hash] opts options for Oxidized::Script
|
38
38
|
# @option opts [String] :host @hostname or ip address for Oxidized::Node
|
39
39
|
# @option opts [String] :model node model (ios, junos etc) if defined, nodes are not loaded from source
|
40
|
+
# @option opts [String] :ostype OS Type (ios, junos, etc)
|
40
41
|
# @option opts [Fixnum] :timeout oxidized timeout
|
41
42
|
# @option opts [String] :username username for login
|
42
43
|
# @option opts [String] :passsword password for login
|
@@ -49,6 +50,7 @@ module Oxidized
|
|
49
50
|
def initialize opts, &block
|
50
51
|
@host = opts.delete :host
|
51
52
|
model = opts.delete :model
|
53
|
+
ostype = opts.delete :ostype
|
52
54
|
timeout = opts.delete :timeout
|
53
55
|
username = opts.delete :username
|
54
56
|
password = opts.delete :password
|
data/oxidized-script.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oxidized-script
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Saku Ytti
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-05-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oxidized
|
@@ -80,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
80
80
|
version: '0'
|
81
81
|
requirements: []
|
82
82
|
rubyforge_project: oxidized-script
|
83
|
-
rubygems_version: 2.5.
|
83
|
+
rubygems_version: 2.5.2
|
84
84
|
signing_key:
|
85
85
|
specification_version: 4
|
86
86
|
summary: cli + library for scripting network devices
|