rosh 0.2.5 → 0.3.0
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/README.md +11 -0
- data/bin/rosh +1 -0
- data/lib/rosh/version.rb +3 -0
- data/lib/rosh.rb +22 -13
- data/rosh.gemspec +2 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f03ab9e65cf17ee6327d425892ec00fcd19b92d
|
4
|
+
data.tar.gz: 1609dced29c0bb1b548b882358648e83fa6b71f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c887a87750fa74cdede9dd1b70d38de6d3db34eb142a1b77f2ec33011deff74596f6c23fa7d23f8fbf8811cb1c78c4123aafa12394ebc37567cb1237f04758ca
|
7
|
+
data.tar.gz: 46ad0b56a3c47ddb99963f9bad25c71b1831e8d2d1e0bf080915e36c0a1790d23ddac4e92285e121e0802dabaa0c946cc72805aa0a2c170020ccff986789c310
|
data/README.md
CHANGED
@@ -21,6 +21,17 @@ Or install it yourself as:
|
|
21
21
|
|
22
22
|
rosh hostname [GNU_screen_session_name]
|
23
23
|
|
24
|
+
To detach the outer screen session,
|
25
|
+
|
26
|
+
^t d
|
27
|
+
|
28
|
+
To send the command to the inner screen session,
|
29
|
+
|
30
|
+
^a
|
31
|
+
|
32
|
+
Currently it is not configurable, but the source code is very simple
|
33
|
+
to be customizable.
|
34
|
+
|
24
35
|
## Contributing
|
25
36
|
|
26
37
|
1. Fork it
|
data/bin/rosh
CHANGED
data/lib/rosh/version.rb
ADDED
data/lib/rosh.rb
CHANGED
@@ -1,25 +1,34 @@
|
|
1
1
|
require 'uri'
|
2
2
|
require 'resolv'
|
3
3
|
require 'net/ssh/config'
|
4
|
+
require 'optparse'
|
5
|
+
require File.join(File.dirname(__FILE__), %w[rosh version])
|
4
6
|
|
5
7
|
class Rosh
|
6
|
-
def initialize(
|
7
|
-
@
|
8
|
-
|
8
|
+
def initialize(*args)
|
9
|
+
@ssh_opts = []
|
10
|
+
alive_interval = 5
|
11
|
+
@escape = '^t'
|
12
|
+
OptionParser.new.tap do |opt|
|
13
|
+
opt.on '-n' do
|
14
|
+
@ssh_opts << '-o UserKnownHostsFile=/dev/null'
|
15
|
+
@ssh_opts << '-o StrictHostKeyChecking=no'
|
16
|
+
end
|
17
|
+
opt.on('-a alive-interval'){|v| alive_interval = v.to_i}
|
18
|
+
opt.on('-e escape'){|v| @escape = v}
|
19
|
+
end.parse! args
|
20
|
+
@host, @name = *args, :default
|
21
|
+
@ssh_opts << "-o ServerAliveInterval=#{alive_interval}"
|
22
|
+
@ssh_opts << "-o ServerAliveCountMax=1"
|
23
|
+
|
24
|
+
# check ~/.ssh/config to resolve alias name
|
9
25
|
config = Net::SSH::Config.for(@host)
|
10
26
|
@host = config[:host_name] if config[:host_name]
|
11
|
-
@
|
12
|
-
opts.each do |opt|
|
13
|
-
case opt
|
14
|
-
when '-n'
|
15
|
-
@opts << '-o UserKnownHostsFile=/dev/null'
|
16
|
-
@opts << '-o StrictHostKeyChecking=no'
|
17
|
-
end
|
18
|
-
end
|
27
|
+
@first_try = true
|
19
28
|
end
|
20
29
|
|
21
30
|
def connect
|
22
|
-
reconnect until system ["ssh", *@
|
31
|
+
reconnect until system ["ssh", *@ssh_opts, resolv,
|
23
32
|
'-t', "'screen -rx #{@name}'", '2>/dev/null']*' '
|
24
33
|
end
|
25
34
|
|
@@ -27,7 +36,7 @@ class Rosh
|
|
27
36
|
if @first_try
|
28
37
|
if !sh('-p 0 -X echo ok', '2>&1 >/dev/null')
|
29
38
|
print "creating new screen session #{@name}... "
|
30
|
-
if sh
|
39
|
+
if sh %{-c /dev/null -e "#{@escape*2}" -dm} and
|
31
40
|
sh '-p 0 -X eval "stuff STY=\\040screen\\015"'
|
32
41
|
puts "done."
|
33
42
|
else
|
data/rosh.gemspec
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require File.join(lib, %w[rosh version])
|
4
5
|
Gem::Specification.new do |spec|
|
5
6
|
spec.name = "rosh"
|
6
|
-
spec.version =
|
7
|
+
spec.version = Rosh::VERSION
|
7
8
|
spec.authors = ["Genki Takiuchi"]
|
8
9
|
spec.email = ["genki@s21g.com"]
|
9
10
|
spec.description = <<-EOD
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rosh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Genki Takiuchi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -55,6 +55,7 @@ files:
|
|
55
55
|
- Rakefile
|
56
56
|
- bin/rosh
|
57
57
|
- lib/rosh.rb
|
58
|
+
- lib/rosh/version.rb
|
58
59
|
- rosh.gemspec
|
59
60
|
homepage: https://github.com/genki/rosh
|
60
61
|
licenses:
|