loginx 1.3.1 → 1.3.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/Gemfile.lock +1 -1
- data/README.md +17 -5
- data/bin/loginx +2 -7
- data/lib/add.rb +18 -23
- data/lib/core.rb +38 -40
- data/lib/delete.rb +24 -32
- data/lib/list.rb +0 -1
- data/lib/loginx.rb +8 -12
- data/lib/loginx/version.rb +1 -1
- data/lib/setport.rb +7 -9
- data/lib/setuser.rb +7 -9
- data/loginx.gemspec +3 -3
- metadata +19 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5dda23e7ea79f069d22bd328ebd295912ef82376
|
4
|
+
data.tar.gz: 2eb59e48598ae172460675e0676e6aaaf0dfaaf9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 98ec08991c10c3794fb2289b452e08ea5ecceb437c625064ac3d56e3148be44f21906bd24c4ac82e1415eaf7394a40e95c1c0c45b456842eab6aa0e0a3aee3ce
|
7
|
+
data.tar.gz: 475bd4eadfe65d7ec5873dc0c7783a50015a9b0552b72f07ac34ad27f9a41248eb55d7821f1465546a5fb03d6645b7be3b1a1b166429c165c101455b7b9ff675
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,11 +1,15 @@
|
|
1
1
|
# Loginx
|
2
2
|
|
3
|
+
Loginx
|
4
|
+
|
3
5
|
##install
|
4
6
|
```
|
5
7
|
gem install loginx
|
6
8
|
```
|
7
9
|
|
8
10
|
##describe
|
11
|
+
|
12
|
+
|
9
13
|
```
|
10
14
|
login server quickly without entering password
|
11
15
|
help generate rsakey
|
@@ -20,14 +24,17 @@ save user and port
|
|
20
24
|
~/.loginx/projects
|
21
25
|
save server infomation
|
22
26
|
```
|
23
|
-
###usage
|
27
|
+
### usage
|
28
|
+
|
24
29
|
```
|
25
30
|
loginx [project_name][server_alias]|[ip]
|
26
31
|
|
27
32
|
recommend configuring loginx alias---lx
|
28
33
|
|
29
34
|
```
|
30
|
-
|
35
|
+
|
36
|
+
### argvs
|
37
|
+
|
31
38
|
```
|
32
39
|
-L list all projects
|
33
40
|
-l [project_name] list all hosts in the project
|
@@ -38,12 +45,18 @@ recommend configuring loginx alias---lx
|
|
38
45
|
-h/no argv help
|
39
46
|
|
40
47
|
```
|
41
|
-
|
48
|
+
|
49
|
+
### improvement
|
50
|
+
|
42
51
|
```
|
43
52
|
add using [tab] to complete command
|
44
53
|
password should be encrypted
|
45
54
|
```
|
46
55
|
|
56
|
+
## details
|
57
|
+
|
58
|
+
using [`methadone`](https://github.com/davetron5000/methadone) to create Ruby console application,using [`ruby_expect`](https://github.com/abates/ruby_expect) to execute remote command
|
59
|
+
|
47
60
|
|
48
61
|
## Contributing
|
49
62
|
|
@@ -52,5 +65,4 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/terrys
|
|
52
65
|
|
53
66
|
## License
|
54
67
|
|
55
|
-
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
56
|
-
|
68
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/bin/loginx
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
# coding: utf-8
|
3
3
|
require 'optparse'
|
4
4
|
require 'methadone'
|
5
|
-
require 'loginx.rb'
|
6
|
-
require 'list.rb'
|
7
5
|
require 'yaml'
|
6
|
+
require 'loginx'
|
7
|
+
require 'list.rb'
|
8
8
|
require 'rubygems'
|
9
9
|
require 'ruby_expect'
|
10
10
|
require 'setuser.rb'
|
@@ -14,10 +14,6 @@ require 'delete.rb'
|
|
14
14
|
require 'core.rb'
|
15
15
|
require 'fileutils'
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
17
|
class App
|
22
18
|
include Methadone::Main
|
23
19
|
include Methadone::CLILogging
|
@@ -126,5 +122,4 @@ class App
|
|
126
122
|
end
|
127
123
|
|
128
124
|
go!
|
129
|
-
|
130
125
|
end
|
data/lib/add.rb
CHANGED
@@ -2,8 +2,7 @@
|
|
2
2
|
class ADD
|
3
3
|
attr_accessor :server_alias, :ip, :password
|
4
4
|
|
5
|
-
|
6
|
-
def initialize(server_alias,ip,password)
|
5
|
+
def initialize(server_alias, ip, password)
|
7
6
|
self.server_alias = server_alias
|
8
7
|
self.ip = ip
|
9
8
|
self.password = password
|
@@ -12,27 +11,27 @@ class ADD
|
|
12
11
|
def add_record(value)
|
13
12
|
project_path = File.expand_path("~/.loginx/projects/")
|
14
13
|
if Loginx::Exist.project_exist?(value)
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
14
|
+
@info = {}
|
15
|
+
detail = {}
|
16
|
+
detail['ip'] = self.ip
|
17
|
+
detail['password'] = self.password
|
18
|
+
@info.store(self.server_alias, detail)
|
19
|
+
@load = YAML::load(File.open("#{project_path}/#{value}.yml"))
|
20
|
+
if @load.has_key?(self.server_alias)
|
21
|
+
puts "the server alias already exists,will you overwrite it(y/n)"
|
22
|
+
gets
|
23
|
+
unless $_.chomp =='y'
|
24
|
+
puts "nothing changed"
|
25
|
+
exit 1
|
28
26
|
end
|
29
|
-
|
27
|
+
end
|
28
|
+
@load.merge!(@info)
|
30
29
|
|
31
30
|
else
|
32
31
|
puts "project #{value} does not exist , will you create it(y/n)"
|
33
32
|
gets
|
34
33
|
if $_.chomp == 'y'
|
35
|
-
file = File.new("#{project_path}/#{value}.yml","w")
|
34
|
+
file = File.new("#{project_path}/#{value}.yml", "w")
|
36
35
|
file << "---\n"
|
37
36
|
file << "example:\n"
|
38
37
|
file << " ip: nil\n"
|
@@ -45,17 +44,13 @@ class ADD
|
|
45
44
|
end
|
46
45
|
end
|
47
46
|
|
48
|
-
|
49
|
-
|
50
|
-
YAML.dump(@load,file)
|
47
|
+
File.open("#{project_path}/#{value}.yml", "w") do |file|
|
48
|
+
YAML.dump(@load, file)
|
51
49
|
file.close
|
52
50
|
#file.write @info.to_yaml
|
53
51
|
puts "update successfully"
|
54
52
|
end
|
55
|
-
|
56
|
-
|
57
53
|
end
|
58
|
-
|
59
54
|
end
|
60
55
|
|
61
56
|
|
data/lib/core.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
class Core_p
|
3
|
-
attr_accessor :project
|
3
|
+
attr_accessor :project, :server_alias
|
4
4
|
$public_key_path = File.expand_path("~/.ssh/id_rsa.pub")
|
5
5
|
$config_path = File.expand_path("~/.loginx/config/config.yml")
|
6
6
|
$project_path = File.expand_path("~/.loginx/projects/")
|
7
7
|
|
8
|
-
def initialize(project,server_alias)
|
8
|
+
def initialize(project, server_alias)
|
9
9
|
self.project = project
|
10
10
|
self.server_alias = server_alias
|
11
11
|
if !File.exist?("#{$public_key_path}")
|
@@ -16,14 +16,14 @@ class Core_p
|
|
16
16
|
|
17
17
|
#when trying to send public key
|
18
18
|
def generate_key
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
puts "please enter return 3 times"
|
20
|
+
cmd = "ssh-keygen -t rsa"
|
21
|
+
`#{cmd}`
|
22
22
|
end
|
23
23
|
|
24
24
|
def login
|
25
25
|
if Loginx::Exist.project_exist?(self.project)
|
26
|
-
config =
|
26
|
+
config = YAML::load (File.open("#{$config_path}"))
|
27
27
|
info = YAML::load(File.open("#{$project_path}/#{self.project}.yml"))
|
28
28
|
if !info.has_key?(self.server_alias)
|
29
29
|
puts "sorry the server alias does not exist"
|
@@ -34,45 +34,45 @@ class Core_p
|
|
34
34
|
ip = info[self.server_alias]['ip']
|
35
35
|
password = info[self.server_alias]['password']
|
36
36
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
expect /continue connecting/ do
|
52
|
-
send "yes"
|
53
|
-
end
|
37
|
+
puts "do you want to send your ssh key"
|
38
|
+
puts "enter return to skip or 'y' to continue to send your key"
|
39
|
+
flag = STDIN.gets.chomp
|
40
|
+
if flag == 'y'
|
41
|
+
cmd2 = "ssh-copy-id -i #{user}@#{ip}"
|
42
|
+
#exec "#{cmd2}"
|
43
|
+
exp = RubyExpect::Expect.spawn("#{cmd2}")
|
44
|
+
exp.procedure do
|
45
|
+
any do
|
46
|
+
expect /Permission denied/ do
|
47
|
+
puts "this user is not allowed"
|
48
|
+
exit 0
|
49
|
+
end
|
54
50
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
end
|
51
|
+
expect /continue connecting/ do
|
52
|
+
send "yes\r"
|
53
|
+
end
|
59
54
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
55
|
+
expect /Connection refused/ do
|
56
|
+
puts "please check your port setting or password"
|
57
|
+
exit 0
|
58
|
+
end
|
64
59
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
exit 0
|
70
|
-
end
|
60
|
+
expect /already exist/ do
|
61
|
+
puts "you already added keys before"
|
62
|
+
exit 0
|
63
|
+
end
|
71
64
|
|
72
|
-
|
65
|
+
expect /assword/ do
|
66
|
+
send "#{password}\r"
|
67
|
+
sleep 3
|
68
|
+
puts "now you can try again, or use |ssh #{user}@#{ip}| if failed please check your password"
|
69
|
+
exit 0
|
73
70
|
end
|
71
|
+
|
72
|
+
run
|
74
73
|
end
|
75
74
|
end
|
75
|
+
end
|
76
76
|
|
77
77
|
cmd = "ssh -p #{port} #{user}@#{ip}"
|
78
78
|
exec "#{cmd}"
|
@@ -81,6 +81,4 @@ class Core_p
|
|
81
81
|
exit 1
|
82
82
|
end
|
83
83
|
end
|
84
|
-
|
85
|
-
|
86
84
|
end
|
data/lib/delete.rb
CHANGED
@@ -9,27 +9,27 @@ class Delete_p
|
|
9
9
|
def del_record(value)
|
10
10
|
project_path = File.expand_path("~/.loginx/projects/")
|
11
11
|
if Loginx::Exist.project_exist?(value)
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
12
|
+
@load = YAML::load(File.open("#{project_path}/#{value}.yml"))
|
13
|
+
if !@load.has_key?(self.server_alias)
|
14
|
+
puts "sorry the server alias does not exist"
|
15
|
+
exit 1
|
16
|
+
end
|
17
|
+
puts "Are you sure to delete it(y/n)"
|
18
|
+
gets
|
19
|
+
if $_.chomp =='y'
|
20
|
+
@load.delete(self.server_alias)
|
21
|
+
else
|
22
|
+
puts "nothing changed"
|
23
|
+
exit 1
|
24
|
+
end
|
25
25
|
else
|
26
26
|
puts "project #{value} does not exist!"
|
27
27
|
exit 1
|
28
28
|
end
|
29
29
|
|
30
30
|
|
31
|
-
File.open("#{project_path}/#{value}.yml","w") do |file|
|
32
|
-
YAML.dump(@load,file)
|
31
|
+
File.open("#{project_path}/#{value}.yml", "w") do |file|
|
32
|
+
YAML.dump(@load, file)
|
33
33
|
file.close
|
34
34
|
#file.write @info.to_yaml
|
35
35
|
puts "update successfully"
|
@@ -37,22 +37,21 @@ class Delete_p
|
|
37
37
|
end
|
38
38
|
|
39
39
|
|
40
|
-
|
41
40
|
def del_file(value)
|
42
41
|
project_path = File.expand_path("~/.loginx/projects/")
|
43
42
|
|
44
43
|
if Loginx::Exist.project_exist?(value)
|
45
44
|
|
46
|
-
|
47
|
-
|
48
|
-
|
45
|
+
puts "Are you sure to delete it(y/n)"
|
46
|
+
gets
|
47
|
+
if $_.chomp =='y'
|
49
48
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
49
|
+
File.delete("#{project_path}/#{value}.yml")
|
50
|
+
puts "update successfully"
|
51
|
+
else
|
52
|
+
puts "nothing changed"
|
53
|
+
exit 1
|
54
|
+
end
|
56
55
|
else
|
57
56
|
puts "project #{value} does not exist!"
|
58
57
|
exit 1
|
@@ -60,10 +59,3 @@ class Delete_p
|
|
60
59
|
end
|
61
60
|
|
62
61
|
end
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
data/lib/list.rb
CHANGED
data/lib/loginx.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
require "loginx/version"
|
3
3
|
|
4
4
|
module Loginx
|
5
|
-
# Your code goes here...
|
6
5
|
class Exist
|
7
6
|
|
8
7
|
def self.project_exist?(value)
|
@@ -10,23 +9,20 @@ module Loginx
|
|
10
9
|
@flag = 0
|
11
10
|
|
12
11
|
if File.exist?("#{project_path}")
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
Find.find("#{project_path}") do |filename|
|
13
|
+
if File.basename(filename, '.yml') == value
|
14
|
+
@flag = 1
|
15
|
+
return true
|
16
|
+
end
|
17
17
|
end
|
18
|
-
end
|
19
18
|
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
if @flag == 0
|
20
|
+
return false
|
21
|
+
end
|
23
22
|
|
24
23
|
else
|
25
24
|
puts "initialize successfully,please try again"
|
26
25
|
end
|
27
|
-
|
28
26
|
end
|
29
|
-
|
30
|
-
|
31
27
|
end
|
32
28
|
end
|
data/lib/loginx/version.rb
CHANGED
data/lib/setport.rb
CHANGED
@@ -11,17 +11,15 @@ class Setport
|
|
11
11
|
def update
|
12
12
|
config_path = File.expand_path("~/.loginx/config/config.yml")
|
13
13
|
if File.exist?("#{config_path}")
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
14
|
+
config = YAML::load (File.open("#{config_path}"))
|
15
|
+
config['config']['port'] = self.port
|
16
|
+
File.open("#{config_path}","w") do |file|
|
17
|
+
file.write config.to_yaml
|
18
|
+
file.close
|
19
|
+
puts "update successfully,now default user is #{self.port}"
|
20
|
+
end
|
21
21
|
else
|
22
22
|
puts "initialize successfully please try again"
|
23
23
|
end
|
24
|
-
|
25
24
|
end
|
26
|
-
|
27
25
|
end
|
data/lib/setuser.rb
CHANGED
@@ -11,17 +11,15 @@ class Setuser
|
|
11
11
|
def update
|
12
12
|
config_path = File.expand_path("~/.loginx/config/config.yml")
|
13
13
|
if File.exist?("#{config_path}")
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
14
|
+
config = YAML::load (File.open("#{config_path}"))
|
15
|
+
config['config']['user'] = self.user
|
16
|
+
File.open("#{config_path}", "w") do |file|
|
17
|
+
file.write config.to_yaml
|
18
|
+
file.close
|
19
|
+
puts "update successfully,now default user is #{self.user}"
|
20
|
+
end
|
21
21
|
else
|
22
22
|
puts "initialize successfully please try again"
|
23
23
|
end
|
24
|
-
|
25
24
|
end
|
26
|
-
|
27
25
|
end
|
data/loginx.gemspec
CHANGED
@@ -15,15 +15,15 @@ Gem::Specification.new do |spec|
|
|
15
15
|
spec.license = "MIT"
|
16
16
|
|
17
17
|
|
18
|
-
|
19
18
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
20
19
|
spec.bindir = "bin"
|
21
20
|
spec.executables = ["loginx"]
|
22
21
|
spec.require_paths = ["lib"]
|
23
22
|
|
23
|
+
spec.add_dependency 'methadone', '>= 1.9.3'
|
24
|
+
spec.add_dependency 'ruby_expect'
|
25
|
+
|
24
26
|
spec.add_development_dependency "bundler", ">= 1.12"
|
25
27
|
spec.add_development_dependency "rake", ">= 10.0"
|
26
|
-
spec.add_dependency('methadone', '>= 1.9.3')
|
27
|
-
spec.add_dependency('ruby_expect')
|
28
28
|
|
29
29
|
end
|
metadata
CHANGED
@@ -1,71 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: loginx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- terryshi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-03-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: methadone
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
type: :
|
19
|
+
version: 1.9.3
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 1.9.3
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: ruby_expect
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
34
|
-
type: :
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
48
|
-
type: :
|
47
|
+
version: '1.12'
|
48
|
+
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
54
|
+
version: '1.12'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :
|
61
|
+
version: '10.0'
|
62
|
+
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
68
|
+
version: '10.0'
|
69
69
|
description: quick login using ssh key and manage your server infomation
|
70
70
|
email:
|
71
71
|
- terryshi96@yahoo.com
|
@@ -113,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
113
|
version: '0'
|
114
114
|
requirements: []
|
115
115
|
rubyforge_project:
|
116
|
-
rubygems_version: 2.6.
|
116
|
+
rubygems_version: 2.6.14
|
117
117
|
signing_key:
|
118
118
|
specification_version: 4
|
119
119
|
summary: quick login
|