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