ipscanner 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/ipscanner.rb +18 -3
- metadata +4 -4
data/lib/ipscanner.rb
CHANGED
@@ -2,20 +2,20 @@
|
|
2
2
|
|
3
3
|
# file: ipscanner.rb
|
4
4
|
|
5
|
-
require '
|
5
|
+
require 'socket'
|
6
6
|
|
7
7
|
class IPScanner
|
8
8
|
|
9
9
|
def initialize(ip_base='192.168.1.')
|
10
10
|
@ip_base = ip_base
|
11
11
|
@a = []
|
12
|
-
threads = (1..254).map{|i| Thread.new {ip = ip_base + i.to_s; @a << i if
|
12
|
+
threads = (1..254).map{|i| Thread.new {ip = ip_base + i.to_s; @a << i if pingecho(ip, 1)}}
|
13
13
|
threads.join
|
14
14
|
end
|
15
15
|
|
16
16
|
def self.run(ip_base='192.168.1.')
|
17
17
|
a = []
|
18
|
-
threads = (1..254).map{|i| Thread.new {ip = ip_base + i.to_s; a << i if
|
18
|
+
threads = (1..254).map{|i| Thread.new {ip = ip_base + i.to_s; a << i if pingecho(ip_base + i.to_s, 1) }}
|
19
19
|
threads.join
|
20
20
|
a.sort.map{|x| ip_base + x.to_s}
|
21
21
|
end
|
@@ -25,4 +25,19 @@ class IPScanner
|
|
25
25
|
def to_a()
|
26
26
|
@a.sort.map{|x| @ip_base + x.to_s}
|
27
27
|
end
|
28
|
+
|
29
|
+
def self.pingecho(host, timeout=5, service="echo")
|
30
|
+
begin
|
31
|
+
timeout(timeout) do
|
32
|
+
s = TCPSocket.new(host, service)
|
33
|
+
s.close
|
34
|
+
end
|
35
|
+
rescue Errno::ECONNREFUSED
|
36
|
+
return true
|
37
|
+
rescue Timeout::Error, StandardError
|
38
|
+
return false
|
39
|
+
end
|
40
|
+
return true
|
41
|
+
end
|
42
|
+
|
28
43
|
end
|
metadata
CHANGED
@@ -2,15 +2,15 @@
|
|
2
2
|
name: ipscanner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.4
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
8
|
-
|
7
|
+
authors:
|
8
|
+
- James Robertson
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-12-09 00:00:00 +00:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|