xlogin 0.8.6 → 0.8.7
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 +5 -5
- data/README.md +18 -0
- data/lib/xlogin/cli.rb +4 -4
- data/lib/xlogin/delegator.rb +1 -1
- data/lib/xlogin/factory.rb +11 -5
- data/lib/xlogin/template.rb +5 -6
- data/lib/xlogin/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 58dec6deed809f45a8ec2f9b5afc73eff63dfddd89344eef9826e8199ac2424f
|
4
|
+
data.tar.gz: 660d5943f6847e6770768c6a15a3322a49b7fc7e49bdda426f2eaa229a7ec3f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a623e0f7e82dc95b079f0be68d69983152df553f5a9468193e7557f8f67ea2b6f032c7f9ae143cbc75f9a3dd8620d42ca9bac5a28c4050847d4c9eeb8a4a531b
|
7
|
+
data.tar.gz: '0854bb0ff3e7e25abd35edadfd9ffc9236b25ba5ff08c55f81514e6d3a27b406569d7fbc0cb2d1091357689c61f80cae8531c6a74f16a100f54cf709f4cebb02'
|
data/README.md
CHANGED
@@ -28,6 +28,24 @@ xlogin vyos01
|
|
28
28
|
xlogin 'vyos*' -e 'show configuration command | no-more; exit' -j 2
|
29
29
|
~~~
|
30
30
|
|
31
|
+
その他のオプションは下記の通り。
|
32
|
+
|
33
|
+
~~~sh
|
34
|
+
$ xlogin -h
|
35
|
+
xlogin HOST_PATTERN [Options]
|
36
|
+
-i, --inventory PATH The PATH to the inventory file(default: $HOME/.xloginrc).
|
37
|
+
--template PATH The PATH to the template file.
|
38
|
+
-T, --template-dir DIRECTORY The DIRECTORY of the template files.
|
39
|
+
-L, --log-dir [DIRECTORY] The DIRECTORY of the log files(default: $PWD).
|
40
|
+
-l, --list List all available devices.
|
41
|
+
-e, --exec Execute commands and quit.
|
42
|
+
-t, --tty Allocate a pseudo-tty.
|
43
|
+
-p, --port NUM Run as server on specified port(default: 8080).
|
44
|
+
-j, --jobs NUM The NUM of jobs to execute in parallel(default: 1).
|
45
|
+
-E, --enable Try to gain enable priviledge.
|
46
|
+
-y, --assume-yes Automatically answer yes to prompts.
|
47
|
+
~~~
|
48
|
+
|
31
49
|
## Installation
|
32
50
|
|
33
51
|
Add this line to your application's Gemfile:
|
data/lib/xlogin/cli.rb
CHANGED
@@ -64,7 +64,7 @@ module Xlogin
|
|
64
64
|
load_templates(*config.templates.map { |file| File.expand_path(file, ENV['PWD']) })
|
65
65
|
end
|
66
66
|
|
67
|
-
config.hostlist = host.to_s.split(/\s+/)
|
67
|
+
config.hostlist = Xlogin.factory.list(*host.to_s.split(/\s+/))
|
68
68
|
raise "No host found: `#{host}`" if config.hostlist.empty?
|
69
69
|
rescue => e
|
70
70
|
$stderr.puts e, '', parser
|
@@ -75,9 +75,9 @@ module Xlogin
|
|
75
75
|
end
|
76
76
|
|
77
77
|
def list(config)
|
78
|
-
wid1 = config.hostlist.map { |e| e[:
|
79
|
-
wid2 = config.hostlist.map { |e| e[:
|
80
|
-
list = config.hostlist.map { |e| "#{e[:
|
78
|
+
wid1 = config.hostlist.map { |e| e[:type].length }.max
|
79
|
+
wid2 = config.hostlist.map { |e| e[:name].length }.max
|
80
|
+
list = config.hostlist.map { |e| "#{e[:type].to_s.ljust(wid1)} #{e[:name].to_s.ljust(wid2)} #{e[:uri]}" }.sort
|
81
81
|
$stdout.puts list
|
82
82
|
end
|
83
83
|
|
data/lib/xlogin/delegator.rb
CHANGED
@@ -36,7 +36,7 @@ module Xlogin
|
|
36
36
|
# vyos 'vyos01', 'telnet://user:pass@host:port'
|
37
37
|
# relay_srv 'vyos01::relay', 'telnet://relay_user:relay_pass@relay_host:relay_port', relay: 'vyos01'
|
38
38
|
#
|
39
|
-
## Write firmware
|
39
|
+
## Write firmware template for 'relay_srv'
|
40
40
|
#
|
41
41
|
# login do |username, password|
|
42
42
|
# waitfor(/login:\s*\z/) && puts(username)
|
data/lib/xlogin/factory.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'singleton'
|
2
|
-
require 'thread'
|
3
2
|
require 'xlogin/template'
|
4
3
|
|
5
4
|
module Xlogin
|
@@ -28,10 +27,15 @@ module Xlogin
|
|
28
27
|
@database[name]
|
29
28
|
end
|
30
29
|
|
31
|
-
def list(
|
32
|
-
|
33
|
-
|
34
|
-
|
30
|
+
def list(*patterns)
|
31
|
+
return @database.values if patterns.empty?
|
32
|
+
|
33
|
+
values = patterns.map do |pattern|
|
34
|
+
key, val = pattern.to_s.split(':')
|
35
|
+
key, val = 'name', key if val.nil?
|
36
|
+
val.split(',').map { |e| @database.values.select { |info| File.fnmatch(e, info[key.to_sym]) } }.reduce(&:|)
|
37
|
+
end
|
38
|
+
values.reduce(&:&).uniq
|
35
39
|
end
|
36
40
|
|
37
41
|
def source_template(*files)
|
@@ -75,6 +79,8 @@ module Xlogin
|
|
75
79
|
name = args.shift
|
76
80
|
uri = args.shift
|
77
81
|
opts = args.shift || {}
|
82
|
+
|
83
|
+
super if [type, name, uri].any? { |e| e.nil? }
|
78
84
|
set(type: type, name: name, uri: uri, **opts)
|
79
85
|
end
|
80
86
|
|
data/lib/xlogin/template.rb
CHANGED
@@ -45,12 +45,11 @@ module Xlogin
|
|
45
45
|
klass = Class.new(Xlogin.const_get(uri.scheme.capitalize))
|
46
46
|
klass.class_exec(@methods) do |methods|
|
47
47
|
methods.each do |name, block|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
else
|
52
|
-
define_method(name, &block)
|
48
|
+
if name == :enable
|
49
|
+
define_method(name) { |*args| instance_exec([*args, opts[name]].first, &block) }
|
50
|
+
next
|
53
51
|
end
|
52
|
+
define_method(name, &block)
|
54
53
|
end
|
55
54
|
end
|
56
55
|
|
@@ -58,7 +57,7 @@ module Xlogin
|
|
58
57
|
end
|
59
58
|
|
60
59
|
def method_missing(name, *, &block)
|
61
|
-
super unless RESERVED_METHODS.include?
|
60
|
+
super unless RESERVED_METHODS.include?(name) and block_given?
|
62
61
|
bind(name) { |*args| instance_exec(*args, &block) }
|
63
62
|
end
|
64
63
|
end
|
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.8.
|
4
|
+
version: 0.8.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- haccht
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-06
|
11
|
+
date: 2018-07-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: net-telnet
|
@@ -166,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
166
|
version: '0'
|
167
167
|
requirements: []
|
168
168
|
rubyforge_project:
|
169
|
-
rubygems_version: 2.
|
169
|
+
rubygems_version: 2.7.6
|
170
170
|
signing_key:
|
171
171
|
specification_version: 4
|
172
172
|
summary: rancid clogin alternative
|