Class: LinuxAdmin::NetworkInterface
- Inherits:
-
Object
- Object
- LinuxAdmin::NetworkInterface
- Includes:
- Common
- Defined in:
- lib/linux_admin/network_interface.rb
Direct Known Subclasses
Constant Summary
Constants included from Common
Instance Attribute Summary collapse
-
#interface ⇒ String
readonly
The interface for networking operations.
Class Method Summary collapse
-
.dist_class(clear_cache = false) ⇒ Class
Gets the subclass specific to the local Linux distro.
-
.new(*args) ⇒ Object
Creates an instance of the correct NetworkInterface subclass for the local distro.
Instance Method Summary collapse
-
#address ⇒ String
Retrieve the IPv4 address assigned to the interface.
-
#address6(scope = :global) ⇒ String
Retrieve the IPv6 address assigned to the interface.
-
#gateway ⇒ String
Retrieve the IPv4 default gateway associated with the interface.
-
#initialize(interface) ⇒ NetworkInterface
constructor
A new instance of NetworkInterface.
-
#mac_address ⇒ String
Retrieve the MAC address associated with the interface.
-
#netmask ⇒ String
Retrieve the IPv4 sub-net mask assigned to the interface.
-
#netmask6(scope = :global) ⇒ String
Retrieve the IPv6 sub-net mask assigned to the interface.
-
#reload ⇒ Boolean
Gathers current network information for this interface.
-
#start ⇒ Boolean
Brings up the network interface.
-
#stop ⇒ Boolean
Brings down the network interface.
Methods included from Common
Constructor Details
#initialize(interface) ⇒ NetworkInterface
Returns a new instance of NetworkInterface.
35 36 37 38 |
# File 'lib/linux_admin/network_interface.rb', line 35 def initialize(interface) @interface = interface reload end |
Instance Attribute Details
#interface ⇒ String (readonly)
Returns the interface for networking operations.
31 32 33 |
# File 'lib/linux_admin/network_interface.rb', line 31 def interface @interface end |
Class Method Details
.dist_class(clear_cache = false) ⇒ Class
Gets the subclass specific to the local Linux distro
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/linux_admin/network_interface.rb', line 14 def self.dist_class(clear_cache = false) @dist_class = nil if clear_cache @dist_class ||= begin if [Distros.rhel, Distros.fedora].include?(Distros.local) NetworkInterfaceRH else NetworkInterfaceGeneric end end end |
.new(*args) ⇒ Object
Creates an instance of the correct NetworkInterface subclass for the local distro
26 27 28 |
# File 'lib/linux_admin/network_interface.rb', line 26 def self.new(*args) self == LinuxAdmin::NetworkInterface ? dist_class.new(*args) : super end |
Instance Method Details
#address ⇒ String
Retrieve the IPv4 address assigned to the interface
64 65 66 |
# File 'lib/linux_admin/network_interface.rb', line 64 def address @network_conf[:address] end |
#address6(scope = :global) ⇒ String
Retrieve the IPv6 address assigned to the interface
72 73 74 75 76 77 78 79 80 81 |
# File 'lib/linux_admin/network_interface.rb', line 72 def address6(scope = :global) case scope when :global @network_conf[:address6_global] when :link @network_conf[:address6_link] else raise ArgumentError, "Unrecognized address scope #{scope}" end end |
#gateway ⇒ String
Retrieve the IPv4 default gateway associated with the interface
114 115 116 |
# File 'lib/linux_admin/network_interface.rb', line 114 def gateway @network_conf[:gateway] end |
#mac_address ⇒ String
Retrieve the MAC address associated with the interface
86 87 88 |
# File 'lib/linux_admin/network_interface.rb', line 86 def mac_address @network_conf[:mac] end |
#netmask ⇒ String
Retrieve the IPv4 sub-net mask assigned to the interface
93 94 95 |
# File 'lib/linux_admin/network_interface.rb', line 93 def netmask @network_conf[:mask] end |
#netmask6(scope = :global) ⇒ String
Retrieve the IPv6 sub-net mask assigned to the interface
101 102 103 104 105 106 107 108 109 |
# File 'lib/linux_admin/network_interface.rb', line 101 def netmask6(scope = :global) if scope == :global @network_conf[:mask6_global] elsif scope == :link @network_conf[:mask6_link] else raise ArgumentError, "Unrecognized address scope #{scope}" end end |
#reload ⇒ Boolean
Gathers current network information for this interface
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/linux_admin/network_interface.rb', line 44 def reload @network_conf = {} return false unless (ip_output = ip_show) parse_ip4(ip_output) parse_ip6(ip_output, :global) parse_ip6(ip_output, :link) @network_conf[:mac] = parse_ip_output(ip_output, %r{link/ether}, 1) ip_route_res = run!(cmd("ip"), :params => ["route"]) @network_conf[:gateway] = parse_ip_output(ip_route_res.output, /^default/, 2) if ip_route_res.success? true rescue AwesomeSpawn::CommandResultError => e raise NetworkInterfaceError.new(e., e.result) end |
#start ⇒ Boolean
Brings up the network interface
121 122 123 |
# File 'lib/linux_admin/network_interface.rb', line 121 def start run(cmd("ifup"), :params => [@interface]).success? end |
#stop ⇒ Boolean
Brings down the network interface
128 129 130 |
# File 'lib/linux_admin/network_interface.rb', line 128 def stop run(cmd("ifdown"), :params => [@interface]).success? end |