danarchy_sys 0.5.3 → 0.5.4
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37afb4c44981ca4c353940933cf1b6edcb8653d2294fb783382a5554d7870321
|
4
|
+
data.tar.gz: e9e460d13686dde0a882425e719f7c7629f19d8e244d3edee68142bfc107611a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82fa8db40aa5f030b99faa0a16588a472d8993e8a1624213393eaf6e12ba2d30b062f2dbb965cc508885dc0b36c1ff78bfa3ba8bf197bca72b45bd48e0e03b72
|
7
|
+
data.tar.gz: bab5de7dd8fc27351574591cc65e04ce4658fd9a842955845a8b486f3c3311cad493c45379b432bb009d57f30510f769495069d68b028e6cc541fe4ef6eea70c
|
data/lib/danarchy_sys/cli.rb
CHANGED
@@ -21,9 +21,9 @@ module DanarchySys
|
|
21
21
|
|
22
22
|
loop do
|
23
23
|
print 'command ~: '
|
24
|
-
cmd = gets
|
24
|
+
cmd = gets
|
25
|
+
cmd = cmd ? cmd.chomp : abort('Exiting!')
|
25
26
|
|
26
|
-
next if cmd.empty?
|
27
27
|
if cmd =~ /^[0-9]*$/
|
28
28
|
menu[cmd.to_i].map { |k, v| cmd = k } if menu.keys.include? cmd.to_i
|
29
29
|
end
|
@@ -17,9 +17,8 @@ class Accounts
|
|
17
17
|
|
18
18
|
until accounts.values.include?(account)
|
19
19
|
print 'Which account should we use? (enter \'exit\' to leave): '
|
20
|
-
account = gets
|
21
|
-
|
22
|
-
abort('Exiting') if account == 'exit'
|
20
|
+
account = gets
|
21
|
+
account = account ? account.chomp : abort('Exiting!')
|
23
22
|
|
24
23
|
if account =~ /^[0-9]*$/
|
25
24
|
account = accounts[account.to_i]
|
@@ -18,9 +18,8 @@ class InstanceManager
|
|
18
18
|
end
|
19
19
|
|
20
20
|
print "#{instance.name} ~: " if instance
|
21
|
-
cmd = gets
|
22
|
-
|
23
|
-
next if cmd.empty?
|
21
|
+
cmd = gets
|
22
|
+
cmd = cmd ? cmd.chomp : abort('Exiting!')
|
24
23
|
abort('Exiting!') if cmd == 'exit'
|
25
24
|
|
26
25
|
if cmd =~ /^[0-9]*$/
|
@@ -46,7 +45,8 @@ class InstanceManager
|
|
46
45
|
end
|
47
46
|
elsif cmd == 'status'
|
48
47
|
instance = @os_compute.instances.get_instance(instance.name)
|
49
|
-
|
48
|
+
uptime_result = @os_compute.ssh(instance, 'uptime')
|
49
|
+
if instance.state == 'ACTIVE' && uptime_result[:stderr]
|
50
50
|
printf("%#{instance.name.size}s %0s %0s\n", instance.name, ' => ', 'WAITING')
|
51
51
|
else
|
52
52
|
printf("%#{instance.name.size}s %0s %0s\n", instance.name, ' => ', instance.state)
|
@@ -120,13 +120,14 @@ class InstanceManager
|
|
120
120
|
print 'Enter an instance to manage or enter a name for a new instance: '
|
121
121
|
|
122
122
|
until instances_numhash.values.collect{|i| i[:name]}.include?(instance_name)
|
123
|
-
instance_name = gets
|
123
|
+
instance_name = gets
|
124
124
|
|
125
125
|
until instance_name.empty? == false
|
126
126
|
print 'Input was blank! Enter an instance or Id from above: '
|
127
127
|
instance_name = gets.chomp
|
128
128
|
end
|
129
129
|
|
130
|
+
instance_name = instance_name ? instance_name.chomp : abort('Exiting!')
|
130
131
|
abort('Exiting') if instance_name == 'exit'
|
131
132
|
return 'main' if instance_name == 'main'
|
132
133
|
|
@@ -37,64 +37,55 @@ module DanarchySys
|
|
37
37
|
|
38
38
|
def ssh(instance, *cmd)
|
39
39
|
instance = instances.get_instance(instance) if instance.class == String
|
40
|
-
opts = { quiet: true }
|
41
|
-
opts[:command] = cmd ? cmd.shift : nil
|
42
40
|
pemfile = keypairs.pemfile_path(instance.key_name)
|
43
41
|
addrs = instances.get_public_addresses(instance)
|
44
|
-
# (instances, keypairs, images) = instances, keypairs, images
|
45
|
-
# instance = instances.get_instance(instance)
|
46
42
|
|
43
|
+
opts = { quiet: true }
|
44
|
+
opts[:command] = cmd ? cmd.shift : nil
|
45
|
+
connector = { ipv4: addrs.grep(/\./).first,
|
46
|
+
ipv6: addrs.grep(/:/).first,
|
47
|
+
ssh_key: pemfile,
|
48
|
+
ssh_user: nil }
|
47
49
|
# Define user by image_id
|
48
50
|
image = images.get_image_by_id(instance.image['id'])
|
49
|
-
|
50
|
-
ssh, user = nil
|
51
51
|
if image == nil
|
52
52
|
puts "Image not found for #{instance.name}! This instance needs to be rebuild with a current image."
|
53
53
|
puts "Attempting to determine the correct username and log in..."
|
54
|
-
|
54
|
+
connector = fallback_ssh(connector)
|
55
55
|
else
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
56
|
+
connector[:ssh_user] = 'gentoo' if image.name =~ /gentoo/i
|
57
|
+
connector[:ssh_user] = 'ubuntu' if image.name =~ /ubuntu/i
|
58
|
+
connector[:ssh_user] = 'debian' if image.name =~ /debian/i
|
59
|
+
connector[:ssh_user] = 'centos' if image.name =~ /centos/i
|
60
|
+
connector[:ssh_user] = 'fedora' if image.name =~ /fedora/i
|
61
|
+
connector[:ssh_user] = 'core' if image.name =~ /coreos/i
|
61
62
|
end
|
62
63
|
|
63
|
-
return if !
|
64
|
-
|
65
|
-
connector = { ipv4: addrs.grep(/\./).first,
|
66
|
-
ipv6: addrs.grep(/:/).first,
|
67
|
-
ssh_user: user,
|
68
|
-
ssh_key: pemfile }
|
69
|
-
|
64
|
+
return if ! connector[:ssh_user]
|
70
65
|
SSH.new(connector, opts)
|
71
66
|
end
|
72
67
|
|
73
|
-
def fallback_ssh(
|
74
|
-
|
75
|
-
|
76
|
-
ssh, user = nil
|
68
|
+
def fallback_ssh(connector)
|
69
|
+
users = %w[gentoo debian ubuntu centos fedora core]
|
70
|
+
fb_opts = { quiet: true, command: 'uptime' }
|
77
71
|
|
78
72
|
users.each do |username|
|
79
|
-
|
80
|
-
|
81
|
-
|
73
|
+
connector[:ssh_user] = username
|
74
|
+
print 'Attempting connection as user: '
|
75
|
+
print connector[:ssh_user], ' @ ', connector[:ipv4], ' => '
|
76
|
+
fallback_result = SSH.new(connector, fb_opts)
|
82
77
|
|
83
|
-
if
|
78
|
+
if fallback_result[:stdout]
|
84
79
|
puts 'success'
|
85
|
-
user = username
|
86
80
|
break
|
87
81
|
else
|
88
82
|
puts 'failed'
|
83
|
+
connector[:ssh_user] = nil
|
89
84
|
end
|
90
85
|
end
|
91
86
|
|
92
|
-
if
|
93
|
-
|
94
|
-
return ssh, nil
|
95
|
-
else
|
96
|
-
return [ssh, user]
|
97
|
-
end
|
87
|
+
puts 'Unable to determine user or SSHd is not running!' if ! connector[:ssh_user]
|
88
|
+
connector
|
98
89
|
end
|
99
90
|
end
|
100
91
|
end
|
data/lib/danarchy_sys/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: danarchy_sys
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan James
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-09-
|
11
|
+
date: 2018-09-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fog-openstack
|