Blame examples/ruby/list-devices.rb

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