dumper-cli 0.1.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 +7 -0
- data/.gitignore +8 -0
- data/.travis.yml +5 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +30 -0
- data/README.md +25 -0
- data/Rakefile +11 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/dumper-cli.gemspec +28 -0
- data/exe/dumper +8 -0
- data/lib/dumper-cli.rb +1 -0
- data/lib/dumper/cli.rb +9 -0
- data/lib/dumper/cli/clock.rb +22 -0
- data/lib/dumper/cli/ip.rb +35 -0
- data/lib/dumper/cli/message.rb +11 -0
- data/lib/dumper/cli/mysql.rb +32 -0
- data/lib/dumper/cli/runner.rb +14 -0
- data/lib/dumper/cli/version.rb +5 -0
- metadata +146 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5aa8a7fd737b7d57df847e12e68b124a44ea9566ad7cadefc45b5f10263d69da
|
4
|
+
data.tar.gz: 3252f5828fac8cda776bff4bcb969d59c5ab65176c748b11123e6916fb10a92b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 79873a1803c749a6556a382743a04fc3d2afaff723cb714f20688781ba3279aeac2f9849e0af8286ed8263641edf449180b76d50db65279655bcc273015d8c91
|
7
|
+
data.tar.gz: 65bfeaa9c729d1f646fa4a23a7fc158e4ef01619618e147a2e9e6b3a880ce77b5c91064f2043f2337e7f7917ce3b47236407dfb4dcee6f76f8c4176692802cce
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
dumper-cli (0.1.0)
|
5
|
+
ipaddress (~> 0.8.3)
|
6
|
+
net-ntp (~> 2.1)
|
7
|
+
rainbow (~> 2.2)
|
8
|
+
thor (~> 0.19)
|
9
|
+
|
10
|
+
GEM
|
11
|
+
remote: https://rubygems.org/
|
12
|
+
specs:
|
13
|
+
ipaddress (0.8.3)
|
14
|
+
minitest (5.10.3)
|
15
|
+
net-ntp (2.1.3)
|
16
|
+
rainbow (2.2.2)
|
17
|
+
rake
|
18
|
+
rake (12.2.1)
|
19
|
+
thor (0.20.0)
|
20
|
+
|
21
|
+
PLATFORMS
|
22
|
+
ruby
|
23
|
+
|
24
|
+
DEPENDENCIES
|
25
|
+
dumper-cli!
|
26
|
+
minitest
|
27
|
+
rake
|
28
|
+
|
29
|
+
BUNDLED WITH
|
30
|
+
1.16.0
|
data/README.md
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# Dumper CLI
|
2
|
+
|
3
|
+
CLI tools to run on servers and check if the server configuration is ready for [Dumper](https://dumper.io).
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Install the CLI:
|
8
|
+
|
9
|
+
```sh
|
10
|
+
$ gem install dumper-cli
|
11
|
+
```
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
```sh
|
16
|
+
$ dumper doctor
|
17
|
+
```
|
18
|
+
|
19
|
+
and it will report if there's anything to be fixed.
|
20
|
+
|
21
|
+
```
|
22
|
+
Checking IP address... 192.168.1.2 => Private IP, warning - remote fetch from dumper.io to this server will fail. You will need to use the dumper gem with rails.
|
23
|
+
Checking my.cnf... No bind-address defined in my.cnf => good
|
24
|
+
Checking server clock accuracy... 2017-11-06 17:39:59 (server time) vs 2017-11-06 17:39:59 (ntp time), diff: 0.009 seconds => good
|
25
|
+
```
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "dumper/cli"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
data/dumper-cli.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/dumper/cli/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |spec|
|
5
|
+
spec.name = 'dumper-cli'
|
6
|
+
spec.version = Dumper::Cli::VERSION
|
7
|
+
spec.authors = ['Kenn Ejima']
|
8
|
+
spec.email = ['kenn.ejima@gmail.com']
|
9
|
+
|
10
|
+
spec.summary = %q{CLI for Dumper.io Agent}
|
11
|
+
spec.description = %q{CLI for Dumper.io Agent}
|
12
|
+
spec.homepage = 'https://github.com/kenn/dumper-cli'
|
13
|
+
|
14
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
15
|
+
f.match(%r{^(test|spec|features)/})
|
16
|
+
end
|
17
|
+
spec.bindir = 'exe'
|
18
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
|
21
|
+
spec.add_runtime_dependency 'thor', '~> 0.19'
|
22
|
+
spec.add_runtime_dependency 'rainbow', '~> 2.2'
|
23
|
+
spec.add_runtime_dependency 'net-ntp', '~> 2.1'
|
24
|
+
spec.add_runtime_dependency 'ipaddress', '~> 0.8.3'
|
25
|
+
|
26
|
+
spec.add_development_dependency 'rake'
|
27
|
+
spec.add_development_dependency 'minitest'
|
28
|
+
end
|
data/exe/dumper
ADDED
data/lib/dumper-cli.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'dumper/cli'
|
data/lib/dumper/cli.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'net/ntp'
|
2
|
+
|
3
|
+
module Dumper
|
4
|
+
module Cli
|
5
|
+
class Clock
|
6
|
+
def self.check
|
7
|
+
print 'Checking server clock accuracy... '
|
8
|
+
target = Net::NTP.get('us.pool.ntp.org').time
|
9
|
+
source = Time.now
|
10
|
+
diff = (target - source).abs.round(3)
|
11
|
+
print "#{source.strftime('%Y-%m-%d %H:%M:%S')} (server time) vs #{target.strftime('%Y-%m-%d %H:%M:%S')} (ntp time), diff: #{diff} seconds => "
|
12
|
+
if diff > 15 * 60
|
13
|
+
puts 'warning, Amazon S3 does not accept clock skewed more than 15 minutes.'.color(:red)
|
14
|
+
return false
|
15
|
+
else
|
16
|
+
puts 'good'.color(:green)
|
17
|
+
return true
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'socket'
|
2
|
+
require 'ipaddress'
|
3
|
+
require 'forwardable'
|
4
|
+
|
5
|
+
module Dumper
|
6
|
+
module Cli
|
7
|
+
class IP
|
8
|
+
extend Forwardable
|
9
|
+
def_delegators :@ip, :address, :private?
|
10
|
+
|
11
|
+
def initialize(*args)
|
12
|
+
UDPSocket.open do |s|
|
13
|
+
s.do_not_reverse_lookup = true
|
14
|
+
s.connect '64.233.187.99', 1
|
15
|
+
@ip = IPAddress(s.addr.last)
|
16
|
+
end
|
17
|
+
raise "#{@ip.address} is not IPv4!" unless @ip.ipv4?
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.check
|
21
|
+
print 'Checking IP address... '
|
22
|
+
ip = IP.new
|
23
|
+
print "#{ip.address} => "
|
24
|
+
if ip.private?
|
25
|
+
puts "Private IP, #{Dumper::Cli::Message.fetch_will_fail_warning}".color(:red)
|
26
|
+
return false
|
27
|
+
else
|
28
|
+
puts 'Public IP, good'.color(:green)
|
29
|
+
return true
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Dumper
|
2
|
+
module Cli
|
3
|
+
class MySQL
|
4
|
+
def self.check
|
5
|
+
print 'Checking my.cnf... '
|
6
|
+
bound = nil
|
7
|
+
['/etc/my.cnf', '/etc/mysql/my.cnf', '/usr/etc/my.cnf', '~/.my.cnf'].each do |name|
|
8
|
+
fullpath = File.expand_path(name)
|
9
|
+
next unless File.exist?(fullpath)
|
10
|
+
File.readlines(fullpath).each do |line|
|
11
|
+
if line =~ /^bind-address/
|
12
|
+
bound = line.split('=').last.strip
|
13
|
+
break
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
if bound
|
18
|
+
if bound == '127.0.0.1'
|
19
|
+
print 'There is bind-address = 127.0.0.1 => '
|
20
|
+
elsif IPAddr.new(bound).private?
|
21
|
+
print "There is bind-address = #{bound} => "
|
22
|
+
end
|
23
|
+
puts Dumper::Cli::Message.fetch_will_fail_warning.color(:red)
|
24
|
+
return false
|
25
|
+
else
|
26
|
+
puts 'No bind-address defined in my.cnf => ' << 'good'.color(:green)
|
27
|
+
return true
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
metadata
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dumper-cli
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kenn Ejima
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-11-06 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: thor
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.19'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.19'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rainbow
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.2'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.2'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: net-ntp
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.1'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.1'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: ipaddress
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.8.3
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.8.3
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: minitest
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
description: CLI for Dumper.io Agent
|
98
|
+
email:
|
99
|
+
- kenn.ejima@gmail.com
|
100
|
+
executables:
|
101
|
+
- dumper
|
102
|
+
extensions: []
|
103
|
+
extra_rdoc_files: []
|
104
|
+
files:
|
105
|
+
- ".gitignore"
|
106
|
+
- ".travis.yml"
|
107
|
+
- Gemfile
|
108
|
+
- Gemfile.lock
|
109
|
+
- README.md
|
110
|
+
- Rakefile
|
111
|
+
- bin/console
|
112
|
+
- bin/setup
|
113
|
+
- dumper-cli.gemspec
|
114
|
+
- exe/dumper
|
115
|
+
- lib/dumper-cli.rb
|
116
|
+
- lib/dumper/cli.rb
|
117
|
+
- lib/dumper/cli/clock.rb
|
118
|
+
- lib/dumper/cli/ip.rb
|
119
|
+
- lib/dumper/cli/message.rb
|
120
|
+
- lib/dumper/cli/mysql.rb
|
121
|
+
- lib/dumper/cli/runner.rb
|
122
|
+
- lib/dumper/cli/version.rb
|
123
|
+
homepage: https://github.com/kenn/dumper-cli
|
124
|
+
licenses: []
|
125
|
+
metadata: {}
|
126
|
+
post_install_message:
|
127
|
+
rdoc_options: []
|
128
|
+
require_paths:
|
129
|
+
- lib
|
130
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
131
|
+
requirements:
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '0'
|
135
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
140
|
+
requirements: []
|
141
|
+
rubyforge_project:
|
142
|
+
rubygems_version: 2.7.0
|
143
|
+
signing_key:
|
144
|
+
specification_version: 4
|
145
|
+
summary: CLI for Dumper.io Agent
|
146
|
+
test_files: []
|