xlogin 0.2.1 → 0.2.2
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/bin/cmd_exec +13 -11
- data/lib/xlogin/firmware.rb +2 -2
- data/lib/xlogin/firmware_factory.rb +10 -10
- data/lib/xlogin/gateway.rb +2 -2
- data/lib/xlogin/rake_task.rb +0 -12
- data/lib/xlogin/session.rb +9 -8
- data/lib/xlogin/ssh.rb +1 -1
- data/lib/xlogin/telnet.rb +1 -1
- data/lib/xlogin/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 66ed84e83f0210fe7afb90cd49eb82e154c283a4
|
4
|
+
data.tar.gz: 4fe09e46fdfffbae74ea20c06052787422f4255b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f94c7c38965d65bcb02d958d243d50b9dbe9c725b5309e2fe5e7176f2bcca260cb7d349e4f1033bc7b4254453b3c4b2ed60c5b535f8bdab0843d390d1e149f7
|
7
|
+
data.tar.gz: 6b28b13d079ed877dc88d3ff64b63576af85a5d13250a49373adb3f9593a487a22aad7cf5f719d0edf2ff41ff08118812d034db86797880aa45639285b07fac4
|
data/bin/cmd_exec
CHANGED
@@ -40,18 +40,19 @@ module Xlogin
|
|
40
40
|
options = Hash.new
|
41
41
|
|
42
42
|
opt = OptionParser.new
|
43
|
-
opt.on('-
|
44
|
-
opt.on('-
|
45
|
-
opt.on('-
|
43
|
+
opt.on('-F', '--force', 'Automatically reply "yes" if confirmed.') { |v| options[:F] = v }
|
44
|
+
opt.on('-e', '--enable', 'Try to gain enable priviledge.') { |v| options[:e] = v }
|
45
|
+
opt.on('-l', '--log', 'Enable logging.') { |v| options[:l] = v }
|
46
|
+
opt.on('-H', 'Display hostnames for each response.') { |v| options[:H] = v }
|
46
47
|
|
47
|
-
opt.on('-f FILE', 'Read target hostnames from FILE.')
|
48
|
-
opt.on('-r FILE', 'Load extention library.')
|
48
|
+
opt.on('-f FILE', 'Read target hostnames from FILE.') { |v| options[:f] = v }
|
49
|
+
opt.on('-r FILE', 'Load extention library.') { |v| options[:r] = v }
|
49
50
|
|
50
|
-
opt.on('-x VALUE', 'Read commands from VALUE.')
|
51
|
-
opt.on('-c VALUE')
|
51
|
+
opt.on('-x VALUE', 'Read commands from VALUE.') { |v| options[:x] = v }
|
52
|
+
opt.on('-c VALUE') { |v| options[:c] = v }
|
52
53
|
|
53
|
-
opt.on('-p VALUE', 'Specify concurrency pool size.')
|
54
|
-
opt.on('-i VALUE', 'Specify interval time [sec].')
|
54
|
+
opt.on('-p VALUE', 'Specify concurrency pool size.') { |v| options[:p] = v }
|
55
|
+
opt.on('-i VALUE', 'Specify interval time [sec].') { |v| options[:i] = v }
|
55
56
|
|
56
57
|
opt.banner += ' HOST...'
|
57
58
|
opt.summary_width = 16
|
@@ -91,12 +92,13 @@ module Xlogin
|
|
91
92
|
pool.run do
|
92
93
|
begin
|
93
94
|
resp = StringIO.new
|
94
|
-
|
95
|
+
force = options[:F] || false
|
95
96
|
loggers = []
|
96
97
|
loggers << $stdout unless size > 1
|
97
98
|
loggers << (URI.regexp =~ node ? URI(node).host : node) + ".log" if options[:l]
|
98
99
|
|
99
|
-
|
100
|
+
|
101
|
+
session = Xlogin.get(node, force: force, log: loggers)
|
100
102
|
session.enable if options[:e] && session.respond_to?(:enable)
|
101
103
|
|
102
104
|
if options[:x]
|
data/lib/xlogin/firmware.rb
CHANGED
@@ -6,7 +6,7 @@ module Xlogin
|
|
6
6
|
|
7
7
|
def initialize
|
8
8
|
@timeout = 5
|
9
|
-
@on_exec
|
9
|
+
@on_exec = nil
|
10
10
|
@prompts = Array.new
|
11
11
|
@methods = Hash.new
|
12
12
|
end
|
@@ -68,7 +68,7 @@ module Xlogin
|
|
68
68
|
|
69
69
|
klass.new(
|
70
70
|
{
|
71
|
-
|
71
|
+
host: uri.host,
|
72
72
|
port: uri.port,
|
73
73
|
userinfo: uri.userinfo,
|
74
74
|
timeout: @timeout,
|
@@ -46,28 +46,28 @@ module Xlogin
|
|
46
46
|
instance_eval(content)
|
47
47
|
end
|
48
48
|
|
49
|
-
def set(type, name, uri, opts = {})
|
50
|
-
@database[name] = { name: name, type: type, uri: uri, opts: opts }
|
51
|
-
end
|
52
|
-
|
53
49
|
def get(name)
|
54
50
|
@database[name]
|
55
51
|
end
|
56
52
|
|
53
|
+
def set(type, name, uri, opts = {})
|
54
|
+
@database[name] = { name: name, type: type, uri: uri, opts: opts }
|
55
|
+
end
|
56
|
+
|
57
57
|
def list
|
58
58
|
@database.map { |nodename, args| args.merge(name: nodename) }
|
59
59
|
end
|
60
60
|
|
61
|
-
def build(
|
62
|
-
item = item.kind_of?(Hash) ?
|
63
|
-
item_uri = item[:uri]
|
64
|
-
firmware = Xlogin::FirmwareFactory[item[:type]]
|
65
|
-
raise Xlogin::GeneralError.new("
|
61
|
+
def build(name, args = {})
|
62
|
+
item = item.kind_of?(Hash) ? name : @database[name]
|
63
|
+
item_uri = item[:uri] if item
|
64
|
+
firmware = Xlogin::FirmwareFactory[item[:type]] if item
|
65
|
+
raise Xlogin::GeneralError.new("Hostname '#{name}' not found ") unless item && item_uri && firmware
|
66
66
|
|
67
67
|
opts = item[:opts] || {}
|
68
68
|
opts = opts.merge(args).reduce({}) { |a, (k, v)| a.merge(k.to_s.downcase.to_sym => v) }
|
69
69
|
|
70
|
-
session = firmware.run(item_uri, opts)
|
70
|
+
session = firmware.dup.run(item_uri, opts)
|
71
71
|
session.name = item[:name]
|
72
72
|
session
|
73
73
|
end
|
data/lib/xlogin/gateway.rb
CHANGED
data/lib/xlogin/rake_task.rb
CHANGED
@@ -19,9 +19,6 @@ module Xlogin
|
|
19
19
|
current_namespace do
|
20
20
|
description = Rake.application.last_description || "Run '#{RakeTask.current_namespace}'"
|
21
21
|
|
22
|
-
desc description
|
23
|
-
task all: names
|
24
|
-
|
25
22
|
names.each do |name|
|
26
23
|
desc "#{description} (#{name})"
|
27
24
|
RakeTask.new(name, &block)
|
@@ -108,15 +105,6 @@ module Xlogin
|
|
108
105
|
run_task
|
109
106
|
end
|
110
107
|
end
|
111
|
-
|
112
|
-
[logfile, lockfile].each do |file|
|
113
|
-
next unless file
|
114
|
-
|
115
|
-
desc 'Remove any temporary products'
|
116
|
-
task 'clean' do
|
117
|
-
rm(file, verbose: true) if File.exist?(file)
|
118
|
-
end
|
119
|
-
end
|
120
108
|
end
|
121
109
|
end
|
122
110
|
|
data/lib/xlogin/session.rb
CHANGED
@@ -3,19 +3,20 @@ require 'stringio'
|
|
3
3
|
module Xlogin
|
4
4
|
module Session
|
5
5
|
|
6
|
+
attr_reader :opts
|
6
7
|
attr_accessor :name
|
7
8
|
|
8
9
|
def configure_session(**opts)
|
9
|
-
@
|
10
|
-
@
|
11
|
-
@port = opts
|
12
|
-
@userinfo = opts
|
13
|
-
raise Xlogin::GeneralError.new('Argument error.') unless @
|
10
|
+
@opts = opts.dup
|
11
|
+
@host = @name = @opts.delete(:host)
|
12
|
+
@port = @opts.delete(:port)
|
13
|
+
@userinfo = @opts.delete(:userinfo).to_s.split(':')
|
14
|
+
raise Xlogin::GeneralError.new('Argument error.') unless @host && @port
|
14
15
|
|
15
|
-
@prompts = opts
|
16
|
-
@timeout = opts
|
16
|
+
@prompts = @opts.delete(:prompts) || [[/[$%#>] ?\z/n, nil]]
|
17
|
+
@timeout = @opts.delete(:timeout) || 60
|
17
18
|
|
18
|
-
@loglist = [opts
|
19
|
+
@loglist = [@opts.delete(:log)].flatten.compact
|
19
20
|
@logger = update_logger
|
20
21
|
end
|
21
22
|
|
data/lib/xlogin/ssh.rb
CHANGED
data/lib/xlogin/telnet.rb
CHANGED
data/lib/xlogin/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xlogin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- haccht
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-06-
|
11
|
+
date: 2017-06-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|