Module: Linux::Ip::Addr

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

Defined Under Namespace

Classes: Interface, IpAddr

Class Method Summary collapse

Class Method Details

.parseObject



76
77
78
# File 'lib/linux/ip/addr.rb', line 76

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


57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/linux/ip/addr.rb', line 57

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.split('@')[0])
        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