Module: Linux::Ip::Addr

Defined in:
lib/linux/ip/addr.rb,
lib/linux/ip/addr/version.rb

Defined Under Namespace

Classes: Interface, IpAddr

Constant Summary collapse

VERSION =
"0.0.2"

Class Method Summary collapse

Class Method Details

.parseObject



58
59
60
# File 'lib/linux/ip/addr.rb', line 58

def self.parse
  parse_from_lines(IO.popen("ip addr show").read.lines)
end

.parse_from_lines(lines) ⇒ Object

23: br202: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default

link/ether d0:27:88:d1:01:6d brd ff:ff:ff:ff:ff:ff
inet 10.10.103.11/22 brd 10.10.103.255 scope global br202
   valid_lft forever preferred_lft forever
inet6 fe80::84c6:95ff:feb7:d76d/64 scope link
   valid_lft forever preferred_lft forever


39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/linux/ip/addr.rb', line 39

def self.parse_from_lines(lines)
  ip_addr = IpAddr.new
  iface = nil
  lines.each do |line|
      line = line.strip.chomp
      if line =~ /^\d+:\s+(\S+):\s+(.*)$/
        iface = Interface.new($1)
        ip_addr.interfaces << iface
      elsif iface
        if line =~ /^\s*link\/ether\s+([a-f0-9:]+)\s+.*$/
          iface.mac_address($1)
        elsif line =~ /^\s*inet[6]*\s+([0-9a-f\:\.\/]+)\s+.*$/
          iface.add_ip($1)
        end
      end
  end
  ip_addr
end