linux-ip-addr 0.0.1
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 +7 -0
- data/.gitignore +14 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +31 -0
- data/Rakefile +2 -0
- data/lib/linux/ip/addr.rb +64 -0
- data/lib/linux/ip/addr/version.rb +7 -0
- data/linux-ip-addr.gemspec +23 -0
- data/test/linux_ip_addr_test.rb +155 -0
- metadata +69 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d81d96b09dc43d3c8bad671207fac42074618241
|
4
|
+
data.tar.gz: 57adf5ffdee3436161df76f0781c34f70e900895
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: eb34e19e0610e70b3179420948f1b7ae3aa0c23c9ec6875b2c7910115e0dbb24f9b4908a46289fe078bffbe3b58033f4272a112c494f10e421faae3921fe9897
|
7
|
+
data.tar.gz: 351a37c90d6ae9626fd6681c31ce090c2110dbc319f799d74d941c77e7689881dd22fd4d3b5aa99def14bb26561a152ca2727e633f53e140910336c7d51917a6
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Meno Abels
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# Linux::Ip::Addr
|
2
|
+
|
3
|
+
TODO: Write a gem description
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'linux-ip-addr'
|
11
|
+
```
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install linux-ip-addr
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
TODO: Write usage instructions here
|
24
|
+
|
25
|
+
## Contributing
|
26
|
+
|
27
|
+
1. Fork it ( https://github.com/[my-github-username]/linux-ip-addr/fork )
|
28
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
29
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
30
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
31
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
require "linux/ip/addr/version"
|
2
|
+
|
3
|
+
module Linux
|
4
|
+
module Ip
|
5
|
+
module Addr
|
6
|
+
|
7
|
+
class Interface
|
8
|
+
attr_accessor :mac_address
|
9
|
+
attr_reader :ips, :name
|
10
|
+
def initialize(name)
|
11
|
+
@name = name
|
12
|
+
@ips = []
|
13
|
+
end
|
14
|
+
def add_ip(ip)
|
15
|
+
@ips << ip
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
class IpAddr
|
21
|
+
attr_reader :interfaces
|
22
|
+
def initialize
|
23
|
+
@interfaces = []
|
24
|
+
end
|
25
|
+
def length
|
26
|
+
interfaces.length
|
27
|
+
end
|
28
|
+
def find(name)
|
29
|
+
interfaces.find { |i| i.name == name }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
#23: br202: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
|
34
|
+
# link/ether d0:27:88:d1:01:6d brd ff:ff:ff:ff:ff:ff
|
35
|
+
# inet 10.10.103.11/22 brd 10.10.103.255 scope global br202
|
36
|
+
# valid_lft forever preferred_lft forever
|
37
|
+
# inet6 fe80::84c6:95ff:feb7:d76d/64 scope link
|
38
|
+
# valid_lft forever preferred_lft forever
|
39
|
+
def self.parse_from_lines(lines)
|
40
|
+
ip_addr = IpAddr.new
|
41
|
+
iface = nil
|
42
|
+
lines.each do |line|
|
43
|
+
line = line.strip.chomp
|
44
|
+
if line =~ /^\d+:\s+(\S+):\s+(.*)$/
|
45
|
+
iface = Interface.new($1)
|
46
|
+
ip_addr.interfaces << iface
|
47
|
+
elsif iface
|
48
|
+
if line =~ /^\s*line\/ether\s+([a-f0-9:]+)\s+.*$/
|
49
|
+
iface.mac_address($1)
|
50
|
+
elsif line =~ /^\s*inet[6]*\s+([0-9a-f\:\.\/]+)\s+.*$/
|
51
|
+
iface.add_ip($1)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
ip_addr
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.parse
|
59
|
+
parse_from_lines(IO.popen("ip addr show").read.lines)
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'linux/ip/addr/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "linux-ip-addr"
|
8
|
+
spec.version = Linux::Ip::Addr::VERSION
|
9
|
+
spec.authors = ["Meno Abels"]
|
10
|
+
spec.email = ["meno.abels@adviser.com"]
|
11
|
+
spec.summary = %q{Parse the output of ip addr on a linux system}
|
12
|
+
spec.description = %q{Parse the output of ip addr on a linux system}
|
13
|
+
spec.homepage = "https://github.com/mabels/gem-linux-ip-addr"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
# spec.add_development_dependency "rake", "~> 10.0"
|
22
|
+
spec.add_development_dependency "ipaddress", "~> 0.8"
|
23
|
+
end
|
@@ -0,0 +1,155 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
5
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
6
|
+
require 'linux/ip/addr'
|
7
|
+
|
8
|
+
class LinuxIpAddrTest < Test::Unit::TestCase
|
9
|
+
def setup
|
10
|
+
@ip_addr_show = <<SAMPLE
|
11
|
+
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
|
12
|
+
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
|
13
|
+
inet 127.0.0.1/8 scope host lo
|
14
|
+
valid_lft forever preferred_lft forever
|
15
|
+
inet6 ::1/128 scope host
|
16
|
+
valid_lft forever preferred_lft forever
|
17
|
+
2: p1p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
|
18
|
+
link/ether d0:27:88:d1:01:6d brd ff:ff:ff:ff:ff:ff
|
19
|
+
inet6 fe80::d227:88ff:fed1:16d/64 scope link
|
20
|
+
valid_lft forever preferred_lft forever
|
21
|
+
3: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default
|
22
|
+
link/ether 36:1b:a1:ba:73:54 brd ff:ff:ff:ff:ff:ff
|
23
|
+
4: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
|
24
|
+
link/ether 74:e5:0b:d7:9d:44 brd ff:ff:ff:ff:ff:ff
|
25
|
+
5: p1p1.1507@p1p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br1507 state UP group default
|
26
|
+
link/ether d0:27:88:d1:01:6d brd ff:ff:ff:ff:ff:ff
|
27
|
+
inet6 fe80::d227:88ff:fed1:16d/64 scope link
|
28
|
+
valid_lft forever preferred_lft forever
|
29
|
+
6: p1p1.995@p1p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br995 state UP group default
|
30
|
+
link/ether d0:27:88:d1:01:6d brd ff:ff:ff:ff:ff:ff
|
31
|
+
inet6 fe80::d227:88ff:fed1:16d/64 scope link
|
32
|
+
valid_lft forever preferred_lft forever
|
33
|
+
7: br1507: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
|
34
|
+
link/ether d0:27:88:d1:01:6d brd ff:ff:ff:ff:ff:ff
|
35
|
+
inet 126.69.140.182/26 brd 126.96.140.191 scope global br1507
|
36
|
+
valid_lft forever preferred_lft forever
|
37
|
+
inet6 fe80::d227:88ff:fed1:16d/64 scope link
|
38
|
+
valid_lft forever preferred_lft forever
|
39
|
+
8: br995: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
|
40
|
+
link/ether d0:27:88:d1:01:6d brd ff:ff:ff:ff:ff:ff
|
41
|
+
inet 10.10.95.11/22 brd 10.10.95.255 scope global br995
|
42
|
+
valid_lft forever preferred_lft forever
|
43
|
+
inet 10.10.95.12/22 scope global secondary br995
|
44
|
+
valid_lft forever preferred_lft forever
|
45
|
+
inet6 fe80::d227:88ff:fed1:16d/64 scope link
|
46
|
+
valid_lft forever preferred_lft forever
|
47
|
+
9: gre0: <NOARP> mtu 1476 qdisc noop state DOWN group default
|
48
|
+
link/gre 169.254.10.9 brd 169.254.10.10
|
49
|
+
10: gretap0: <BROADCAST,MULTICAST> mtu 1476 qdisc noop state DOWN group default qlen 1000
|
50
|
+
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
|
51
|
+
11: gt0@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1476 qdisc noqueue state UNKNOWN group default
|
52
|
+
link/gre 169.254.10.1 peer 169.254.10.2
|
53
|
+
inet 169.254.10.1/30 brd 169.254.10.3 scope global gt0
|
54
|
+
valid_lft forever preferred_lft forever
|
55
|
+
inet6 fe80::5efe:a9fe:a01/64 scope link
|
56
|
+
valid_lft forever preferred_lft forever
|
57
|
+
12: gt1@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1476 qdisc noqueue state UNKNOWN group default
|
58
|
+
link/gre 169.254.10.5 peer 169.254.10.6
|
59
|
+
inet 169.254.10.5/30 brd 169.254.10.7 scope global gt1
|
60
|
+
valid_lft forever preferred_lft forever
|
61
|
+
inet6 fe80::5efe:a9fe:a05/64 scope link
|
62
|
+
valid_lft forever preferred_lft forever
|
63
|
+
13: gtmia@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1476 qdisc noqueue state UNKNOWN group default
|
64
|
+
link/gre 169.254.10.9 peer 169.254.10.10
|
65
|
+
inet 169.254.10.9/30 brd 169.254.10.11 scope global gtmia
|
66
|
+
valid_lft forever preferred_lft forever
|
67
|
+
inet6 fe80::5efe:a9fe:a09/64 scope link
|
68
|
+
valid_lft forever preferred_lft forever
|
69
|
+
14: p1p1.110@p1p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br110 state UP group default
|
70
|
+
link/ether d0:27:88:d1:01:6d brd ff:ff:ff:ff:ff:ff
|
71
|
+
inet6 fe80::d227:88ff:fed1:16d/64 scope link
|
72
|
+
valid_lft forever preferred_lft forever
|
73
|
+
15: p1p1.201@p1p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br201 state UP group default
|
74
|
+
link/ether d0:27:88:d1:01:6d brd ff:ff:ff:ff:ff:ff
|
75
|
+
inet6 fe80::d227:88ff:fed1:16d/64 scope link
|
76
|
+
valid_lft forever preferred_lft forever
|
77
|
+
16: p1p1.202@p1p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br202 state UP group default
|
78
|
+
link/ether d0:27:88:d1:01:6d brd ff:ff:ff:ff:ff:ff
|
79
|
+
inet6 fe80::d227:88ff:fed1:16d/64 scope link
|
80
|
+
valid_lft forever preferred_lft forever
|
81
|
+
17: p1p1.402@p1p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br402 state UP group default
|
82
|
+
link/ether d0:27:88:d1:01:6d brd ff:ff:ff:ff:ff:ff
|
83
|
+
inet6 fe80::d227:88ff:fed1:16d/64 scope link
|
84
|
+
valid_lft forever preferred_lft forever
|
85
|
+
18: p1p1.997@p1p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br997 state UP group default
|
86
|
+
link/ether d0:27:88:d1:01:6d brd ff:ff:ff:ff:ff:ff
|
87
|
+
inet6 fe80::d227:88ff:fed1:16d/64 scope link
|
88
|
+
valid_lft forever preferred_lft forever
|
89
|
+
19: br110: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
|
90
|
+
link/ether d0:27:88:d1:01:6d brd ff:ff:ff:ff:ff:ff
|
91
|
+
inet 10.1.0.11/16 brd 10.1.255.255 scope global br110
|
92
|
+
valid_lft forever preferred_lft forever
|
93
|
+
inet6 fe80::1046:faff:feed:ca96/64 scope link
|
94
|
+
valid_lft forever preferred_lft forever
|
95
|
+
20: br201: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
|
96
|
+
link/ether d0:27:88:d1:01:6d brd ff:ff:ff:ff:ff:ff
|
97
|
+
inet 10.10.16.11/22 brd 10.10.19.255 scope global br201
|
98
|
+
valid_lft forever preferred_lft forever
|
99
|
+
inet6 fe80::50ac:36ff:fe1b:24e8/64 scope link
|
100
|
+
valid_lft forever preferred_lft forever
|
101
|
+
21: br402: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
|
102
|
+
link/ether d0:27:88:d1:01:6d brd ff:ff:ff:ff:ff:ff
|
103
|
+
inet 10.10.99.11/22 brd 10.10.99.255 scope global br402
|
104
|
+
valid_lft forever preferred_lft forever
|
105
|
+
inet6 fe80::f41f:71ff:fe45:2e3b/64 scope link
|
106
|
+
valid_lft forever preferred_lft forever
|
107
|
+
22: br997: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
|
108
|
+
link/ether d0:27:88:d1:01:6d brd ff:ff:ff:ff:ff:ff
|
109
|
+
inet 17.110.59.53/26 brd 17.110.59.63 scope global br997
|
110
|
+
valid_lft forever preferred_lft forever
|
111
|
+
inet6 fe80::408e:b9ff:fe81:d1f2/64 scope link
|
112
|
+
valid_lft forever preferred_lft forever
|
113
|
+
23: br202: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
|
114
|
+
link/ether d0:27:88:d1:01:6d brd ff:ff:ff:ff:ff:ff
|
115
|
+
inet 10.10.103.11/22 brd 10.10.103.255 scope global br202
|
116
|
+
valid_lft forever preferred_lft forever
|
117
|
+
inet6 fe80::84c6:95ff:feb7:d76d/64 scope link
|
118
|
+
valid_lft forever preferred_lft forever
|
119
|
+
30: tun2: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
|
120
|
+
link/none
|
121
|
+
inet 10.153.66.129 peer 10.153.66.130/32 scope global tun2
|
122
|
+
valid_lft forever preferred_lft forever
|
123
|
+
31: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
|
124
|
+
link/none
|
125
|
+
inet 10.153.65.1 peer 10.153.65.2/32 scope global tun1
|
126
|
+
valid_lft forever preferred_lft forever
|
127
|
+
32: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
|
128
|
+
link/none
|
129
|
+
inet 10.153.65.129 peer 10.153.65.130/32 scope global tun0
|
130
|
+
valid_lft forever preferred_lft forever
|
131
|
+
SAMPLE
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_me
|
135
|
+
ip_addr = Linux::Ip::Addr.parse_from_lines(@ip_addr_show.lines)
|
136
|
+
assert_equal 26, ip_addr.length
|
137
|
+
assert_equal "br995", ip_addr.find('br995').name
|
138
|
+
assert_equal ["10.10.95.11/22", "10.10.95.12/22", "fe80::d227:88ff:fed1:16d/64"], ip_addr.find('br995').ips
|
139
|
+
end
|
140
|
+
|
141
|
+
def test_find
|
142
|
+
require 'ipaddress'
|
143
|
+
map = ["10.10.95.0/22"].map{|i| IPAddress.parse(i)}
|
144
|
+
ip_addr = Linux::Ip::Addr.parse_from_lines(@ip_addr_show.lines)
|
145
|
+
ret = ip_addr.interfaces.find do |iface|
|
146
|
+
iface.ips.find do |ip|
|
147
|
+
ip = IPAddress.parse(ip)
|
148
|
+
ip.ipv4? && map.find {|net| net.include?(ip) }
|
149
|
+
end
|
150
|
+
end
|
151
|
+
assert_equal "br995", ret.name
|
152
|
+
end
|
153
|
+
|
154
|
+
end
|
155
|
+
|
metadata
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: linux-ip-addr
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Meno Abels
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-11-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: ipaddress
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.8'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.8'
|
27
|
+
description: Parse the output of ip addr on a linux system
|
28
|
+
email:
|
29
|
+
- meno.abels@adviser.com
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- .gitignore
|
35
|
+
- Gemfile
|
36
|
+
- LICENSE.txt
|
37
|
+
- README.md
|
38
|
+
- Rakefile
|
39
|
+
- lib/linux/ip/addr.rb
|
40
|
+
- lib/linux/ip/addr/version.rb
|
41
|
+
- linux-ip-addr.gemspec
|
42
|
+
- test/linux_ip_addr_test.rb
|
43
|
+
homepage: https://github.com/mabels/gem-linux-ip-addr
|
44
|
+
licenses:
|
45
|
+
- MIT
|
46
|
+
metadata: {}
|
47
|
+
post_install_message:
|
48
|
+
rdoc_options: []
|
49
|
+
require_paths:
|
50
|
+
- lib
|
51
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - '>='
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
requirements: []
|
62
|
+
rubyforge_project:
|
63
|
+
rubygems_version: 2.0.14
|
64
|
+
signing_key:
|
65
|
+
specification_version: 4
|
66
|
+
summary: Parse the output of ip addr on a linux system
|
67
|
+
test_files:
|
68
|
+
- test/linux_ip_addr_test.rb
|
69
|
+
has_rdoc:
|