net-fping 0.2.1 → 0.3
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 +35 -4
- data/lib/net/fping.rb +30 -11
- data/net-fping.gemspec +1 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0844a28f622940227eca27a24393106db83aca17
|
4
|
+
data.tar.gz: 1b41817221c7c2776abac62c6e08badb23e99ee0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 72e415c0e5c4b60a783ca757f3beb52eb3e2d7dac27de2f4c2bb6dc68c70057efbfed5ea0e6e9c4909b79d3dba9fbd0e6855376d52c82b14d6744b8bf99f7aaf
|
7
|
+
data.tar.gz: 38b9cbc9b00dc12837aedfe6256cba14a8c803d7af373d2f936c065ed32a0af28e09d770a4df01a4abef1b7d215b932c94be7655dbd1f273573187b723659bc4
|
data/README.md
CHANGED
@@ -9,15 +9,46 @@ Pretty straight forward:
|
|
9
9
|
```ruby
|
10
10
|
require 'net/fping'
|
11
11
|
|
12
|
-
alive = Fping.alive(["10.0.0.1", "10.0.0.2", "10.0.0.3"])
|
12
|
+
alive = Net::Fping.alive(["10.0.0.1", "10.0.0.2", "10.0.0.3"])
|
13
13
|
> ["10.0.0.1", "10.0.0.3"]
|
14
14
|
|
15
|
-
alive = Fping.dead(["10.0.0.1", "10.0.0.2", "10.0.0.3"])
|
15
|
+
alive = Net::Fping.dead(["10.0.0.1", "10.0.0.2", "10.0.0.3"])
|
16
16
|
> ["10.0.0.2"]
|
17
17
|
|
18
|
-
alive = Fping.alive_in_subnet("192.168.0.0/24")
|
18
|
+
alive = Net::Fping.alive_in_subnet("192.168.0.0/24")
|
19
19
|
> ["192.168.0.1", "192.168.0.100", "192.168.0.254"]
|
20
20
|
|
21
|
-
alive = Fping.alive_in_range("192.168.0.0", "192.168.0.200")
|
21
|
+
alive = Net::Fping.alive_in_range("192.168.0.0", "192.168.0.200")
|
22
22
|
> ["192.168.0.1", "192.168.0.100"]
|
23
23
|
```
|
24
|
+
|
25
|
+
You can also specify the following options on each command (defaults as per fping shown):
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
{
|
29
|
+
retries: 3,
|
30
|
+
count: 1,
|
31
|
+
bytes: 56,
|
32
|
+
interval: 25,
|
33
|
+
timeout: 500
|
34
|
+
}
|
35
|
+
```
|
36
|
+
|
37
|
+
So this would be a faster way to ping a 16 bit subnet:
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
alive = Net::Fping.alive_in_subnet("172.16.0.0/16", retries: 0)
|
41
|
+
```
|
42
|
+
|
43
|
+
You can also extract latencies:
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
latencies = Net::Fping.latency("4.2.2.2", 68, 6, 1000)
|
47
|
+
pp latencies
|
48
|
+
> [
|
49
|
+
0, # LOSS
|
50
|
+
13.7, # MIN
|
51
|
+
15.5, # AVG
|
52
|
+
17.3 # MAX
|
53
|
+
]
|
54
|
+
```
|
data/lib/net/fping.rb
CHANGED
@@ -4,24 +4,43 @@ module Net
|
|
4
4
|
module Fping
|
5
5
|
class << self
|
6
6
|
|
7
|
-
def
|
7
|
+
def default_options
|
8
|
+
{
|
9
|
+
retries: 3,
|
10
|
+
count: 1,
|
11
|
+
bytes: 56,
|
12
|
+
interval: 25,
|
13
|
+
timeout: 500
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
def build_args(opts)
|
18
|
+
opts = default_options.merge(options)
|
19
|
+
"-c #{opts[:count]} -r #{opts[:retries]} -t #{opts[:timeout]} -i #{opts[:interval]} -b #{opts[:bytes]}"
|
20
|
+
end
|
21
|
+
|
22
|
+
def alive(hosts=[], **opts)
|
8
23
|
return [] if hosts.empty?
|
9
|
-
|
24
|
+
args = build_args(opts)
|
25
|
+
%x[fping #{args} -a #{hosts.join(" ")} 2>/dev/null].split("\n");
|
10
26
|
end
|
11
27
|
|
12
|
-
def dead(hosts=[])
|
28
|
+
def dead(hosts=[], **opts)
|
13
29
|
return [] if hosts.empty?
|
14
|
-
|
30
|
+
args = build_args(opts)
|
31
|
+
%x[fping #{args} -u #{hosts.join(" ")} 2>/dev/null].split("\n")
|
15
32
|
end
|
16
33
|
|
17
|
-
def alive_in_subnet(subnet)
|
18
|
-
|
34
|
+
def alive_in_subnet(subnet, **opts)
|
35
|
+
args = build_args(opts)
|
36
|
+
%x[fping #{args} -ag #{subnet} 2>/dev/null].split("\n")
|
19
37
|
end
|
20
38
|
|
21
|
-
def alive_in_range(from, to)
|
22
|
-
|
39
|
+
def alive_in_range(from, to, **opts)
|
40
|
+
args = build_args(opts)
|
41
|
+
%x[fping #{args} -ag #{from} #{to} 2>/dev/null].split("\n")
|
23
42
|
end
|
24
|
-
|
43
|
+
|
25
44
|
# Added defs for latency based metrics
|
26
45
|
def latency_simple(host)
|
27
46
|
bytes = 68
|
@@ -30,13 +49,13 @@ module Net
|
|
30
49
|
%x[fping -b #{bytes} -c #{count} -q -p #{interval} #{host}]
|
31
50
|
end
|
32
51
|
|
33
|
-
def latency(host, bytes, count, interval)
|
52
|
+
def latency(host, bytes, count, interval=1000)
|
34
53
|
cmd = "fping -b #{bytes} -c #{count} -q -p #{interval} #{host}"
|
35
54
|
Open3.popen3(cmd) do |stdin, stdout, stderr, wait_thr|
|
36
55
|
# output is written to stderr for some reason
|
37
56
|
ltc = stderr.read.gsub(/[%, ]/, "/")
|
38
57
|
ltc = ltc.split(/.*loss\/=\/[0-9]+\/[0-9]+\/([0-9]+)\/\/\/min\/avg\/max\/=\/([0-9.]+)\/([0-9.]+)\/([0-9.]+)/)[-5..4]
|
39
|
-
|
58
|
+
return ltc
|
40
59
|
end
|
41
60
|
end
|
42
61
|
|
data/net-fping.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "net-fping"
|
7
|
-
spec.version = "0.
|
7
|
+
spec.version = "0.3"
|
8
8
|
spec.authors = ["Robert McLeod"]
|
9
9
|
spec.email = ["robert@penguinpower.co.nz"]
|
10
10
|
spec.description = %q{Net-fping is an fping wrapper that allows fast ping checks on multiple remote hosts}
|
@@ -15,4 +15,3 @@ Gem::Specification.new do |spec|
|
|
15
15
|
spec.files = `git ls-files`.split($/)
|
16
16
|
spec.require_paths = ["lib"]
|
17
17
|
end
|
18
|
-
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: net-fping
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.3'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert McLeod
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-05-30 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Net-fping is an fping wrapper that allows fast ping checks on multiple
|
14
14
|
remote hosts
|
@@ -41,7 +41,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
41
41
|
version: '0'
|
42
42
|
requirements: []
|
43
43
|
rubyforge_project:
|
44
|
-
rubygems_version: 2.
|
44
|
+
rubygems_version: 2.4.8
|
45
45
|
signing_key:
|
46
46
|
specification_version: 4
|
47
47
|
summary: fast ping checks using fping
|