|
Packit |
5756e2 |
#!/usr/bin/env ruby
|
|
Packit Service |
87a54e |
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
Packit |
5756e2 |
#
|
|
Packit |
5756e2 |
# Copyright (C) 2011 - 2012 Red Hat, Inc.
|
|
Packit |
5756e2 |
#
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
require 'dbus'
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
#
|
|
Packit |
5756e2 |
# This example lists basic information about network interfaces known to NM
|
|
Packit |
5756e2 |
#
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
# For the types see include/NetworkManager.h
|
|
Packit |
5756e2 |
devtypes = { 1 => "Ethernet",
|
|
Packit |
5756e2 |
2 => "Wi-Fi",
|
|
Packit |
5756e2 |
5 => "Bluetooth",
|
|
Packit |
5756e2 |
6 => "OLPC",
|
|
Packit |
5756e2 |
7 => "WiMAX",
|
|
Packit |
5756e2 |
8 => "Modem",
|
|
Packit |
5756e2 |
9 => "InfiniBand",
|
|
Packit |
5756e2 |
10 => "Bond",
|
|
Packit |
5756e2 |
11 => "VLAN",
|
|
Packit |
5756e2 |
12 => "ADSL",
|
|
Packit |
5756e2 |
13 => "Bridge",
|
|
Packit |
5756e2 |
14 => "Generic",
|
|
Packit |
5756e2 |
15 => "Team",
|
|
Packit |
5756e2 |
16 => "TUN",
|
|
Packit |
5756e2 |
17 => "IPTunnel",
|
|
Packit |
5756e2 |
18 => "MACVLAN",
|
|
Packit |
5756e2 |
19 => "VXLAN",
|
|
Packit |
5756e2 |
20 => "Veth",
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
states = { 0 => "Unknown",
|
|
Packit |
5756e2 |
10 => "Unmanaged",
|
|
Packit |
5756e2 |
20 => "Unavailable",
|
|
Packit |
5756e2 |
30 => "Disconnected",
|
|
Packit |
5756e2 |
40 => "Prepare",
|
|
Packit |
5756e2 |
50 => "Config",
|
|
Packit |
5756e2 |
60 => "Need Auth",
|
|
Packit |
5756e2 |
70 => "IP Config",
|
|
Packit |
5756e2 |
80 => "IP Check",
|
|
Packit |
5756e2 |
90 => "Secondaries",
|
|
Packit |
5756e2 |
100 => "Activated",
|
|
Packit |
5756e2 |
110 => "Deactivating",
|
|
Packit |
5756e2 |
120 => "Failed" }
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
# Get system bus
|
|
Packit |
5756e2 |
system_bus = DBus::SystemBus.instance
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
# Get the NetworkManager service
|
|
Packit |
5756e2 |
nm_service = system_bus.service("org.freedesktop.NetworkManager")
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
# Get the object from the service
|
|
Packit |
5756e2 |
nm_object = nm_service.object("/org/freedesktop/NetworkManager")
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
# Set default interface for the object
|
|
Packit |
5756e2 |
nm_object.default_iface = "org.freedesktop.NetworkManager"
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
# Introspect it
|
|
Packit |
5756e2 |
nm_object.introspect
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
# Get all devices known to NM
|
|
Packit |
5756e2 |
devices = nm_object.GetDevices.first
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
# and print their properties
|
|
Packit |
5756e2 |
devices.each do |d|
|
|
Packit |
5756e2 |
dev_obj = system_bus.service("org.freedesktop.NetworkManager").object(d)
|
|
Packit |
5756e2 |
dev_obj.introspect
|
|
Packit |
5756e2 |
props = dev_obj["org.freedesktop.DBus.Properties"].GetAll("org.freedesktop.NetworkManager.Device")
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
puts "============================"
|
|
Packit |
5756e2 |
puts "Interface: #{props[0]['Interface']}"
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
devtype = devtypes[props[0]['DeviceType']]
|
|
Packit |
5756e2 |
devtype = "Unknown" if devtype.nil?
|
|
Packit |
5756e2 |
puts "Type: #{devtype}"
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
puts "Driver: #{props[0]['Driver']}"
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
state = states[props[0]['State']]
|
|
Packit |
5756e2 |
state = "Unknown" if state.nil?
|
|
Packit |
5756e2 |
puts "State: #{state}"
|
|
Packit |
5756e2 |
end
|