ssh-manager 0.0.6 → 0.0.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 +4 -4
- data/config/settings.yml +2 -1
- data/config/sshm.db +0 -0
- data/lib/ssh/manager/cli.rb +57 -25
- data/lib/ssh/manager/client.rb +11 -0
- data/lib/ssh/manager/db.rb +6 -6
- data/lib/ssh/manager/version.rb +1 -1
- data/ssh-manager.gemspec +1 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e4c65127691cc262a53e1b6be85f842ba415e349
|
4
|
+
data.tar.gz: 7058ae0879a2d78f69f8cbaa7dfc53317059e111
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00fc8b45dab4c90ec36791c0491f6c036fe6ec43b67f51f61053e6ad492905f3ff3c60502a3cad06d7f3b57aa76f27cd91b00391ac2d30e78037ff7c3124b88e
|
7
|
+
data.tar.gz: 8c423a6806e02655fb5696b35842a6377d228933ab4393eece72f96255154072db8679086bca25e481c87c30108db869680facdc9a5a2d9c50d8eb39565928da
|
data/config/settings.yml
CHANGED
data/config/sshm.db
CHANGED
Binary file
|
data/lib/ssh/manager/cli.rb
CHANGED
@@ -2,6 +2,7 @@ require_relative 'db'
|
|
2
2
|
require 'yaml'
|
3
3
|
FileUtils.cp ("#{File.dirname(__FILE__)}/../../../config/settings.yml"), ("#{File.join(Dir.home)}" + '/.config/sshm/') unless File.exists?(("#{File.join(Dir.home)}" + '/.config/sshm/settings.yml'))
|
4
4
|
CONFIG = YAML.load_file("#{File.join(ENV['HOME'])}/.config/sshm/settings.yml")
|
5
|
+
require 'debugger'
|
5
6
|
|
6
7
|
module SSH
|
7
8
|
module Manager
|
@@ -11,34 +12,52 @@ module SSH
|
|
11
12
|
@options = opts
|
12
13
|
end
|
13
14
|
|
14
|
-
def
|
15
|
-
ip = SSH::Manager::Database.new.get_connection_data[id.to_i-1][0]
|
16
|
-
user = SSH::Manager::Database.new.get_connection_data[id.to_i-1][1]
|
15
|
+
def check_term(ip, user)
|
17
16
|
if CONFIG['terminal'] == "xfce4-terminal" || CONFIG['terminal'] == "gnome-terminal"
|
18
|
-
|
19
|
-
|
17
|
+
if CONFIG['tabbed'] == 'true'
|
18
|
+
command = '--tab --command='
|
19
|
+
else
|
20
|
+
command = '--command='
|
21
|
+
end
|
22
|
+
#TODO: add title --title='connection name to identify '
|
23
|
+
#TODO: bug when no terminal is open => wants to open 2 terms
|
24
|
+
%x(#{CONFIG['terminal']} #{command}"ssh #{user}@#{ip}")
|
25
|
+
elsif CONFIG['terminal'] == "xterm" || CONFIG['terminal'] == "urxvt"
|
20
26
|
%x(#{CONFIG['terminal']} -e "ssh #{user}@#{ip}")
|
21
27
|
else
|
22
28
|
puts "We dont support #{CONFIG['terminal']} right now"
|
23
|
-
puts
|
29
|
+
puts 'Check Github for further development or contributing'
|
24
30
|
end
|
31
|
+
end
|
25
32
|
|
26
|
-
|
27
|
-
|
33
|
+
def connect_to(id)
|
34
|
+
@ip = SSH::Manager::Database.new.get_connection_data[id.to_i-1][0]
|
35
|
+
@user = SSH::Manager::Database.new.get_connection_data[id.to_i-1][1]
|
36
|
+
check_term(@ip, @user)
|
37
|
+
#TODO: check for options
|
38
|
+
#TODO: if db[secure_login] = false => http://linuxcommando.blogspot.de/2008/10/how-to-disable-ssh-host-key-checking.html
|
28
39
|
end
|
29
40
|
|
30
41
|
def add_connection(ip)
|
31
|
-
puts
|
32
|
-
user
|
42
|
+
puts 'Username: '
|
43
|
+
user = $stdin.gets.chomp
|
33
44
|
user = 'root' if user == ''
|
34
|
-
puts
|
45
|
+
puts 'Hostname: '
|
35
46
|
hostname = $stdin.gets.chomp
|
36
|
-
puts
|
47
|
+
puts 'port: '
|
37
48
|
port = $stdin.gets.chomp
|
38
|
-
port =
|
39
|
-
puts
|
49
|
+
port = '22' if port == ''
|
50
|
+
puts 'Notes: '
|
40
51
|
note = $stdin.gets.chomp
|
41
|
-
|
52
|
+
puts 'Options: '
|
53
|
+
options = $stdin.gets.chomp
|
54
|
+
options = '' if options == ''
|
55
|
+
puts 'Group: '
|
56
|
+
group = $stdin.gets.chomp
|
57
|
+
count = 0
|
58
|
+
created_at = Time.now.to_s
|
59
|
+
last_time = Time.now.to_s
|
60
|
+
SSH::Manager::Database.new.add_new_connection(ip, user, hostname, port, note, created_at, options, count, group, last_time)
|
42
61
|
end
|
43
62
|
|
44
63
|
def delete(id)
|
@@ -48,43 +67,56 @@ module SSH
|
|
48
67
|
|
49
68
|
def list_all
|
50
69
|
cnt = 0
|
51
|
-
# TODO: add indentation functionality with stringlenght etc..
|
52
70
|
connections = Hash[SSH::Manager::Database.new.get_connection_data.collect { |x| [cnt+=1, x]}]
|
53
|
-
puts
|
71
|
+
puts 'ID IP USERNAME HOSTNAME PORT NOTES GROUP'
|
54
72
|
connections.each do |x|
|
55
73
|
print "#{x[0]}: "
|
56
74
|
x[1].each do |a|
|
57
|
-
printf
|
75
|
+
printf '%-20s', a
|
58
76
|
end
|
59
77
|
puts "\n"
|
60
78
|
end
|
61
|
-
|
62
79
|
end
|
63
80
|
|
64
81
|
def update(id)
|
65
|
-
puts
|
82
|
+
puts 'Entries wont change of left out blank.'
|
83
|
+
puts 'Username: '
|
66
84
|
user =$stdin.gets.chomp
|
67
85
|
user = SSH::Manager::Database.new.get_connection_data[id.to_i][1] if user == ''
|
68
|
-
puts
|
86
|
+
puts 'Hostname: '
|
69
87
|
hostname = $stdin.gets.chomp
|
70
88
|
hostname = SSH::Manager::Database.new.get_connection_data[id.to_i][2] if hostname == ''
|
71
|
-
puts
|
89
|
+
puts 'port: '
|
72
90
|
port = $stdin.gets.chomp
|
73
91
|
port = SSH::Manager::Database.new.get_connection_data[id.to_i][3] if port == ''
|
74
|
-
puts
|
92
|
+
puts 'Notes: '
|
75
93
|
note = $stdin.gets.chomp
|
76
94
|
note = SSH::Manager::Database.new.get_connection_data[id.to_i][4] if note == ''
|
77
95
|
SSH::Manager::Database.new.update_connection(SSH::Manager::Database.new.get_connection_data[id.to_i][0], user, hostname, port, note)
|
78
96
|
end
|
79
97
|
|
80
98
|
def search_for(term)
|
99
|
+
puts 'IP USERNAME HOSTNAME PORT NOTES GROUP'
|
81
100
|
SSH::Manager::Database.new.search_for(term).each do |x|
|
82
|
-
|
101
|
+
x.all.each do |cons|
|
102
|
+
cons.values.each do |each_con|
|
103
|
+
printf '%-20s', each_con
|
104
|
+
end
|
105
|
+
puts "\n"
|
106
|
+
end
|
83
107
|
end
|
84
108
|
puts "All results for searchterm: #{term}"
|
85
109
|
end
|
86
110
|
|
111
|
+
def multiple_connection(term)
|
112
|
+
SSH::Manager::Database.new.search_for(term).each do |x|
|
113
|
+
x.all.each do |dataset|
|
114
|
+
check_term(dataset[:ip], dataset[:user])
|
115
|
+
#TODO: Add terminalposition
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
87
120
|
end
|
88
121
|
end
|
89
122
|
end
|
90
|
-
|
data/lib/ssh/manager/client.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
require 'optparse'
|
3
3
|
require_relative 'db'
|
4
4
|
require_relative 'client'
|
5
|
+
require_relative 'version'
|
5
6
|
|
6
7
|
module SSH
|
7
8
|
module Manager
|
@@ -32,9 +33,15 @@ module SSH
|
|
32
33
|
elsif @options[:update]
|
33
34
|
puts 'Updating ..'
|
34
35
|
cli.new(@options).update(@options[:update])
|
36
|
+
elsif @options[:multi]
|
37
|
+
puts 'Connecting to multiple ips'
|
38
|
+
cli.new(@options).multiple_connection(@options[:multi])
|
35
39
|
elsif @options[:search]
|
36
40
|
puts 'Searching ..'
|
37
41
|
cli.new(@options).search_for(@options[:search])
|
42
|
+
# elsif @options[:settings]
|
43
|
+
# puts 'Settings'
|
44
|
+
# cli.new(@options).settings(@options[:settings])
|
38
45
|
else
|
39
46
|
cli.new(@argv.first).connect_to(@argv.first) if @argv != []
|
40
47
|
puts @optparse if @argv ==[]
|
@@ -65,6 +72,10 @@ module SSH
|
|
65
72
|
opts.on( '-s', '--search string', 'search connection for given criteria' ) do |opt|
|
66
73
|
@options[:search] = opt
|
67
74
|
end
|
75
|
+
@options[:multi] = false
|
76
|
+
opts.on( '-m', '--multi string', 'connect to multiple ips with given criteria' ) do |opt|
|
77
|
+
@options[:multi] = opt
|
78
|
+
end
|
68
79
|
@options[:list] = false
|
69
80
|
opts.on( '-l', '--list', 'list all connections' ) do
|
70
81
|
@options[:list] = true
|
data/lib/ssh/manager/db.rb
CHANGED
@@ -5,8 +5,8 @@ module SSH
|
|
5
5
|
module Manager
|
6
6
|
class Database
|
7
7
|
|
8
|
-
FileUtils.cp ("#{File.dirname(__FILE__)}/../../../config/sshm.db"), ("#{File.join(Dir.home)}" + '/.config/sshm/') unless File.exists?(("#{File.join(Dir.home)}" + '/.config/sshm/sshm.db'))
|
9
8
|
FileUtils.mkdir_p("#{File.join(ENV['HOME'])}/.config/sshm/") unless Dir.exists?("#{ENV['HOME']}/.config/sshm")
|
9
|
+
FileUtils.cp ("#{File.dirname(__FILE__)}/../../../config/sshm.db"), ("#{File.join(Dir.home)}" + '/.config/sshm/') unless File.exists?(("#{File.join(Dir.home)}" + '/.config/sshm/sshm.db'))
|
10
10
|
|
11
11
|
@path = "#{File.join(ENV['HOME'])}/.config/sshm"
|
12
12
|
DATABASE = Sequel.connect("sqlite://#{@path}/sshm.db")
|
@@ -18,12 +18,11 @@ module SSH
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def get_connection_data
|
21
|
-
@connections.map([:ip, :user, :hostname, :port, :note])
|
21
|
+
@connections.map([:ip, :user, :hostname, :port, :note, :group])
|
22
22
|
end
|
23
23
|
|
24
|
-
def add_new_connection(ip, user='root', hostname='', port=22, note='')
|
25
|
-
|
26
|
-
@connections.insert(:ip => ip, :user => user, :hostname => hostname, :port => port, :note => note)
|
24
|
+
def add_new_connection(ip, user='root', hostname='', port=22, note='', created_at, option, count, group, last_time)
|
25
|
+
@connections.insert(:ip => ip, :user => user, :hostname => hostname, :port => port, :note => note, :created_at => created_at, :options => option, :group => group, :count => count, :last_time => last_time)
|
27
26
|
end
|
28
27
|
|
29
28
|
def delete_connection(ip)
|
@@ -37,9 +36,10 @@ module SSH
|
|
37
36
|
|
38
37
|
def search_for(term)
|
39
38
|
# check online: search for 'contains' not for complete matching
|
40
|
-
return @connections.where(:ip => term), @connections.where(:user => term), @connections.where(:hostname => term), @connections.where(:port => term), @connections.where(:note => term)
|
39
|
+
return @connections.where(:ip => term), @connections.where(:user => term), @connections.where(:hostname => term), @connections.where(:port => term), @connections.where(:note => term), @connections.where(:group => term), @connections.where(:options => term)
|
41
40
|
end
|
42
41
|
|
42
|
+
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
data/lib/ssh/manager/version.rb
CHANGED
data/ssh-manager.gemspec
CHANGED
@@ -21,5 +21,6 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.3"
|
22
22
|
spec.add_runtime_dependency 'sequel', '=4.13.0'
|
23
23
|
spec.add_runtime_dependency 'sqlite3', '=1.3.9'
|
24
|
+
#spec.add_runtime_dependency 'ruby-devel', '=1.3.9'
|
24
25
|
spec.add_development_dependency "rake"
|
25
26
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ssh-manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joshua Schmid, Juraj Hura
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|