downtime 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NTdlODVlYzBjNzY0ZWU0NjFlMjUwOWNkOGVlZjc3MTgyMDQyYzJiNA==
5
- data.tar.gz: !binary |-
6
- ZDM1MGM3MDA5MTJhNTc2OTVjNDNhMjIxM2FkYjllMDdkZDEwYWVhYg==
2
+ SHA1:
3
+ metadata.gz: e98457b64dba43ca15dabec94cf3020542e19760
4
+ data.tar.gz: 3d36aeafe269ea93ead1aa77e960043e2fd4bb76
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- MmQ1YzQzYjc1ODgzNGI4NGNiOGNjZDk5ZDkyN2IzZGY2NWE3MDllNzE0MWY3
10
- ZGNjZjRiNjA1ZWQ2ZDg0MzJmZWU3ZDUwMTE5MmM3NjVkNmUxNmE1OTI5YzM3
11
- ZjZkMzNjMWZhYTJhOTM3ZmQ0NmU4ZTE1MTFlMTc2OGUxOTFlZDQ=
12
- data.tar.gz: !binary |-
13
- NDZkODQwOGU3YmVjMTJkZmFhYmJlZDY0YTFjNTc1NTEzYzZjN2QxNTZkNzEy
14
- MTViYTU2YzVkZTkwMmFmNDJiZTUxOTkwZDBiMWI0NTIwMDE4NmJlMmQ0Mzli
15
- ZjZjZWNkMzAzYmNlNjhhYjYxZGQ1YjdjMDFkY2E3OWJhMmM1MGE=
6
+ metadata.gz: 982921b1f752759e99d3e4e763b67e8d0b267d9ee34d9d33ea844696a732fa9f06e094a197eef206291ecded511eaa0afe8440ad6b21197c5243ecfdef5bde3b
7
+ data.tar.gz: 816122b302e54164f33a23c2fbd737b93b3311ee180e33805846a4516f12008d3a1bd93bc62b981d2c02f99f410d7fd493723964eafb7c9bcb92d4fe430e8cf1
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Downtime
2
2
 
3
- `downtime` checks your connection to a host (`8.8.8.8`) and aggregates the up- or downtimes (connection or no connection) in a file in a human readable format. Connection is made via a call to `dig +time=1 +tries=1 8.8.8.8`, so your ruby process needs to be able to call that command - although it would be really easy to change which tool is used.
3
+ `downtime` checks your connection to a host (`8.8.8.8`) and aggregates the up- or downtimes (connection or no connection) in a file in a human readable format. Connection is made via a call to `dig +time=1 +tries=1 8.8.8.8` and `wget -q -t 1 --timeout 1 --spider http://siebenlinden.de`, so your ruby process needs to be able to call that command - although it would be really easy to change which tool is used.
4
4
 
5
5
  It was made to track e.g. outages of your ISP.
6
6
 
@@ -25,9 +25,9 @@ Or install it yourself as:
25
25
  ## Usage
26
26
 
27
27
  Call as `downtime`.
28
- It will create a `downtime.log` file in the current working directory.
28
+ It will create a `downtime_wget.log` and a `downtime_dig.log` file in the current working directory.
29
29
 
30
- The file (`downtime.log`) will look like this:
30
+ The files (`downtime_*.log`) will look like this:
31
31
 
32
32
  # This file was generated by the downtime ruby gem.
33
33
  2015-01-01-10-22 up till 2015-01-02-08-10 (1000 minutes)
@@ -3,26 +3,34 @@ require "downtime/timestamp"
3
3
 
4
4
  module Downtime
5
5
  class DowntimeCheck
6
+ attr_accessor :ip
6
7
  attr_accessor :host
7
8
  attr_accessor :log_file
8
9
 
9
10
  def initialize
10
- @host = "8.8.8.8"
11
- @log_file = "downtime.log"
11
+ @ip = "8.8.8.8"
12
+ @host = "http://siebenlinden.de"
13
+ @log_file_dig = "downtime_dig.log"
14
+ @log_file_wget = "downtime_wget.log"
12
15
  end
13
16
 
14
17
  def perform
15
- ensure_logfile
18
+ ensure_logfiles
16
19
  timestamp!
17
- check_and_update_file
20
+ check_and_update_files
18
21
  end
19
22
 
20
23
  private
21
24
 
22
- def check_and_update_file
23
- lines = File.readlines @log_file
25
+ def check_and_update_files
26
+ check_and_update_file(@log_file_dig, &method(:is_up_dig?))
27
+ check_and_update_file(@log_file_wget, &method(:is_up_wget?))
28
+ end
29
+
30
+ def check_and_update_file(log_file, &check_mthd)
31
+ lines = File.readlines log_file
24
32
  was_down = lines[-1] =~ /down/
25
- up = is_up?
33
+ up = check_mthd.call
26
34
  minutes = 0
27
35
  if lines.length > 1
28
36
  first_timestamp = lines[-1][/^[0-9-]*/]
@@ -50,29 +58,38 @@ module Downtime
50
58
  lines << "#{@timestamp} down till #{@timestamp}"
51
59
  end
52
60
  end
53
- File.open(@log_file, 'w') do |f|
61
+ File.open(log_file, 'w') do |f|
54
62
  f.puts lines
55
63
  end
56
64
  up
57
65
  end
58
66
 
59
- def is_up? host=nil
60
- host = @host if host.nil?
61
- dig = `dig +time=1 +tries=1 #{host}`
67
+ def is_up_dig? ip=nil
68
+ ip = @ip if ip.nil?
69
+ dig = `dig +time=1 +tries=1 #{ip}`
62
70
  dig.lines.find {|l| l =~ /time.*ms/}
63
71
  end
64
72
 
65
- def ensure_logfile
66
- return if File.exist? @log_file
67
- append_to_logfile "# This file is created by the downtime #{Downtime::VERSION} ruby gem."
73
+ def is_up_wget? host=nil
74
+ host = @host if host.nil?
75
+ wget = `wget -q -t 1 --timeout 1 --spider #{host}`
76
+ return $?.exitstatus
77
+ end
78
+
79
+ def ensure_logfiles
80
+ return if(File.exist?(@log_file_dig) && File.exist?(@log_file_wget))
81
+ append_to_logfiles "# This file is created by the downtime #{Downtime::VERSION} ruby gem."
68
82
  end
69
83
 
70
84
  def timestamp!
71
85
  @timestamp = Timestamp.new
72
86
  end
73
87
 
74
- def append_to_logfile text
75
- File.open(@log_file, 'a') do |f|
88
+ def append_to_logfiles text
89
+ File.open(@log_file_wget, 'a') do |f|
90
+ f.puts text
91
+ end
92
+ File.open(@log_file_dig, 'a') do |f|
76
93
  f.puts text
77
94
  end
78
95
  end
@@ -1,3 +1,3 @@
1
1
  module Downtime
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: downtime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Wolfsteller
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-02 00:00:00.000000000 Z
11
+ date: 2015-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.7'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  description: Calls dig and updates up- and downtime information
@@ -46,7 +46,7 @@ executables:
46
46
  extensions: []
47
47
  extra_rdoc_files: []
48
48
  files:
49
- - .gitignore
49
+ - ".gitignore"
50
50
  - Gemfile
51
51
  - LICENSE.txt
52
52
  - README.md
@@ -67,17 +67,17 @@ require_paths:
67
67
  - lib
68
68
  required_ruby_version: !ruby/object:Gem::Requirement
69
69
  requirements:
70
- - - ! '>='
70
+ - - ">="
71
71
  - !ruby/object:Gem::Version
72
72
  version: '0'
73
73
  required_rubygems_version: !ruby/object:Gem::Requirement
74
74
  requirements:
75
- - - ! '>='
75
+ - - ">="
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
78
  requirements: []
79
79
  rubyforge_project:
80
- rubygems_version: 2.2.2
80
+ rubygems_version: 2.4.6
81
81
  signing_key:
82
82
  specification_version: 4
83
83
  summary: Monitors your internet connection