Class: ManageIQ::NetworkDiscovery::PortScanner

Inherits:
Object
  • Object
show all
Defined in:
lib/manageiq/network_discovery/port_scanner.rb

Class Method Summary collapse

Class Method Details

.portAndOrScan?(ost, ports) ⇒ Boolean

Returns:

  • (Boolean)


19
20
21
22
# File 'lib/manageiq/network_discovery/port_scanner.rb', line 19

def self.portAndOrScan?(ost, ports)
  ports.each { |p| return false unless portOrScan?(ost, p) }
  true
end

.portOpen(ost, port) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/manageiq/network_discovery/port_scanner.rb', line 30

def self.portOpen(ost, port)
  ost.timeout ||= 10
  begin
    Timeout.timeout(ost.timeout) do
      s = TCPSocket.open(ost.ipaddr, port)
      s.close
      $log.debug "PortScan: ip = #{ost.ipaddr}, port = #{port}, Found port" if $log
      true
    end
  rescue Timeout::Error, StandardError => err
    $log.debug "PortScan: ip = #{ost.ipaddr}, port = #{port}, #{err}" if $log
    false
  end
end

.portOrScan?(ost, ports) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
27
28
# File 'lib/manageiq/network_discovery/port_scanner.rb', line 24

def self.portOrScan?(ost, ports)
  ports = [ports] unless ports.kind_of?(Array)
  ports.each { |p| return true if portOpen(ost, p) }
  false
end

.scanPortArray(ost, ports) ⇒ Object



7
8
9
10
11
# File 'lib/manageiq/network_discovery/port_scanner.rb', line 7

def self.scanPortArray(ost, ports)
  portsFound = []
  ports.each { |p| portsFound << p if portOpen(ost, p) }
  portsFound
end

.scanPortRange(ost, startPort, endPort) ⇒ Object



13
14
15
16
17
# File 'lib/manageiq/network_discovery/port_scanner.rb', line 13

def self.scanPortRange(ost, startPort, endPort)
  portsFound = []
  startPort.upto(endPort) { |p| portsFound << p if portOpen(ost, p) }
  portsFound
end