xlogin 0.12.4 → 0.12.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 40a19a8c4be89c5b57af233605e059b2cb835c293e8ad6db1a52ed568b1968c7
4
- data.tar.gz: 96d9bda304dd69d4a1c2962336af11c68862924987b7661af417ebc566be39ab
3
+ metadata.gz: 81f206f9e13d4c7554c774e78b2f1922c38b2dbca8e159f4874f027a82c82c99
4
+ data.tar.gz: 03e07c95b87a97dd6865013b829c3da4468ee599d3262430f81a6e230551198f
5
5
  SHA512:
6
- metadata.gz: 0f0720e0bb78e942f01d360e9a9e0cfb9fcaddcf4b324bac18052ef44d59a95e41e5925814b257be4604154cebed065b57589546d34a66c74f7aa1ab5e0a4b91
7
- data.tar.gz: 89c7788c08960f365eacfdfc1c74b0e52a136faa84f60045da97939af8206b0d9739e7b19d51dfffb7de7bf771843c59156831f0c408f2d750047195ae451343
6
+ metadata.gz: 73af1ca92ea918891c286f1f1a5b9d0e5fbc6acf878cc4d823739350d6af9edfb85ad1da9b9e2bcbe1e3e75f51c907850c81c885c3243087e588cc7f1e38ed1b
7
+ data.tar.gz: 56835cfe13e9f94a41b3a20681cc6ba883b429276f7d1ec5665a5da040f6be8c1c4c9a342cb46809436d5d4771d1435d924e0726f1177874eda1bfc5b322e5df
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # xlogin
2
2
 
3
3
  rancid clogin alternative.
4
- xlogin is a tool to login devices and execute series of tasks.
4
+ xlogin is a tool to login devices and execute series of commands with ease.
5
5
 
6
6
  ## Installation
7
7
 
@@ -21,8 +21,9 @@ Or install it yourself as:
21
21
 
22
22
  ## Usage
23
23
 
24
- Write a template file that describe how to login to the specific type of device, and store it to `~/.xlogin.d/`.
25
- Take vyos as an example, template file would be:
24
+ Write a firmware template that describe how to manage the device, and store it to `~/.xlogin.d/`.
25
+ Be aware that the name of the template file should match the hosttype of the device in the inventory file.
26
+ Take vyos as an example, template file `vyos.rb` would be:
26
27
 
27
28
  ```ruby
28
29
  prompt(/[$#] (?:\e\[K)?\z/n)
@@ -34,11 +35,10 @@ login do |username, password|
34
35
  end
35
36
  ```
36
37
 
37
- Some other examples are in [lib/xlogin/templates](https://github.com/haccht/xlogin/tree/master/lib/xlogin/templates).
38
+ Some other example templates are in [lib/xlogin/templates](https://github.com/haccht/xlogin/tree/master/lib/xlogin/templates).
38
39
  You can just load these built-in templates by adding `require "xlogin/template"` in your script.
39
40
 
40
- Beside template files, you need to prepare an inventory file `~/.xloginrc`.
41
- In this file, you need to write all information required to login each device.
41
+ Besides template files, you need to prepare an inventory file `~/.xloginrc` that list all information required to login each devices.
42
42
 
43
43
  ```
44
44
  #hosttype hostname uri scheme
@@ -46,13 +46,13 @@ vyos 'vyos01', 'telnet://vagrant:vagrant@127.0.0.1:2200'
46
46
  vyos 'vyos02', 'telnet://vagrant:vagrant@127.0.0.1:2201'
47
47
  ```
48
48
 
49
- Now you can login any device in your `.xloginrc` file with a command:
49
+ Now you can login the device in your `.xloginrc` file.
50
50
 
51
51
  ```sh
52
52
  $ xlogin vyos01
53
53
  ```
54
54
 
55
- And execute multiple operations with just a single command:
55
+ And execute multiple operations with just a single command.
56
56
 
57
57
  ~~~sh
58
58
  $ xlogin 'vyos*' -e 'show configuration command | no-more; exit' -j 2
data/lib/xlogin/cli.rb CHANGED
@@ -21,8 +21,8 @@ module Xlogin
21
21
  def self.getopts(args)
22
22
  config = OpenStruct.new(
23
23
  jobs: 1,
24
- auth: false,
25
24
  task: [:tty, nil],
25
+ assume_yes: false,
26
26
  inventory: DEFAULT_INVENTORY_FILE,
27
27
  template_dir: DEFAULT_TEMPLATE_DIR,
28
28
  )
@@ -40,12 +40,12 @@ module Xlogin
40
40
  parser.on('-e COMMAND', '--exec', 'Execute commands and quit.') { |v| config.task = [:exec, v] }
41
41
 
42
42
  parser.on('-j NUM', '--jobs', Integer, 'The NUM of jobs to execute in parallel(default: 1).') { |v| config.jobs = v }
43
- parser.on('-y', '--assume-yes', TrueClass, 'Automatically answer yes to prompts.') { |v| config.auth = v }
44
43
  parser.on('-E', '--enable', TrueClass, 'Try to gain enable priviledge.') { |v| config.enable = v }
44
+ parser.on('-y', '--assume-yes', TrueClass, 'Automatically answer yes to prompts.') { |v| config.assume_yes = v }
45
45
 
46
46
  parser.parse!(args)
47
47
  Xlogin.configure do
48
- authorize(config.auth)
48
+ assume_yes(true)
49
49
  source(File.expand_path(config.inventory, ENV['PWD']))
50
50
  template(File.expand_path(config.template_dir, ENV['PWD']))
51
51
  end
@@ -85,14 +85,6 @@ module Xlogin
85
85
  logger.push buffer if !silent && Rake.application.options.always_multitask
86
86
 
87
87
  session = Xlogin.get(name, log: logger, timeout: timeout)
88
- def session.msg(text, prefix: "[INFO]", chomp: false, **color)
89
- default_color = { color: :green }
90
-
91
- log("\n")
92
- log(Time.now.iso8601.colorize(**color) + ' ') if !Rake.application.options.always_multitask
93
- log("#{prefix} #{text}".colorize(**default_color.merge(color)))
94
- cmd('') unless chomp
95
- end
96
88
 
97
89
  @runner.call(session)
98
90
  $stdout.print format_log(buffer.string)
@@ -117,4 +109,15 @@ module Xlogin
117
109
  end
118
110
 
119
111
  end
112
+
113
+ module SessionModule
114
+ def msg(text, prefix: "[INFO]", chomp: false, **color)
115
+ default_color = { color: :green }
116
+
117
+ log("\n")
118
+ log(Time.now.iso8601.colorize(**color) + ' ') if !Rake.application.options.always_multitask
119
+ log("#{prefix} #{text}".colorize(**default_color.merge(color)))
120
+ cmd('') unless chomp
121
+ end
122
+ end
120
123
  end
@@ -62,7 +62,7 @@ module Xlogin
62
62
 
63
63
  def puts(*args, &block)
64
64
  args = [instance_exec(*args, &@template.interrupt!)].flatten.compact if @template.interrupt!
65
- super(*args, &block) unless args.empty?
65
+ args.empty? ? super('', &block) : super(*args, &block)
66
66
  end
67
67
 
68
68
  def waitfor(*args, &block)
@@ -1,3 +1,3 @@
1
1
  module Xlogin
2
- VERSION = "0.12.4"
2
+ VERSION = "0.12.5"
3
3
  end
data/lib/xlogin.rb CHANGED
@@ -8,7 +8,6 @@ module Xlogin
8
8
 
9
9
  class SessionError < StandardError; end
10
10
  class TemplateError < StandardError; end
11
- class AuthorizationError < StandardError; end
12
11
 
13
12
  class << self
14
13
 
@@ -46,8 +45,8 @@ module Xlogin
46
45
  instance_eval(&block)
47
46
  end
48
47
 
49
- def authorized?
50
- @authorized == true
48
+ def assume_yes?
49
+ @assume_yes == true
51
50
  end
52
51
 
53
52
  def generate_templates(dir)
@@ -57,8 +56,8 @@ module Xlogin
57
56
  end
58
57
 
59
58
  private
60
- def authorize(boolean = true, &block)
61
- @authorized = boolean == true || (block && block.call == true)
59
+ def assume_yes(boolean = true, &block)
60
+ @assume_yes = boolean == true || (block && block.call == true)
62
61
  end
63
62
 
64
63
  def source(*sources, &block)
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.12.4
4
+ version: 0.12.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - haccht
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-10 00:00:00.000000000 Z
11
+ date: 2019-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-telnet