1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
|
#!/usr/bin/env gjs
// SPDX-License-Identifier: GPL-2.0-or-later
/*
* Copyright (C) 2014, 2017 Red Hat, Inc.
*/
const System = imports.system;
const NM = imports.gi.NM;
const GLib = imports.gi.GLib;
/*
* This example shows how to get addresses, routes and DNS information
* from NMIP4Config and NMIP6Config (got out of NMDevice)
*/
function show_addresses (dev, family)
{
let ip_cfg;
if (family == GLib.SYSDEF_AF_INET)
ip_cfg = dev.get_ip4_config ();
else
ip_cfg = dev.get_ip6_config ();
if (ip_cfg == null) {
print ("None");
return;
}
let nm_addresses = ip_cfg.get_addresses ();
if (nm_addresses.length == 0) {
print ("None");
return;
}
for (let nm_address of nm_addresses) {
let addr = nm_address.get_address ();
let prefix = nm_address.get_prefix ();
print (addr + "/" + prefix);
}
}
function show_gateway (dev, family)
{
let ip_cfg;
if ((family == GLib.SYSDEF_AF_INET))
ip_cfg = dev.get_ip4_config ();
else
ip_cfg = dev.get_ip6_config ();
let gw;
if (ip_cfg == null)
gw = "None"
else {
gw = ip_cfg.get_gateway ();
if (gw == '')
gw = "None"
}
print (gw);
}
function show_routes (dev, family)
{
let ip_cfg;
if ((family == GLib.SYSDEF_AF_INET))
ip_cfg = dev.get_ip4_config ();
else
ip_cfg = dev.get_ip6_config ();
if (ip_cfg == null) {
print ("None");
return;
}
let nm_routes = ip_cfg.get_routes ();
if (nm_routes.length == 0) {
print ("None");
return;
}
for (let nm_route of nm_routes) {
let dest = nm_route.get_dest ();
let prefix = nm_route.get_prefix ();
let next_hop = nm_route.get_next_hop ();
let metric = nm_route.get_metric ();
print (dest + "/" + prefix + " " + next_hop + " " + metric);
}
}
function show_dns (dev, family)
{
let ip_cfg;
if ((family == GLib.SYSDEF_AF_INET))
ip_cfg = dev.get_ip4_config ();
else
ip_cfg = dev.get_ip6_config ();
if (ip_cfg == null) {
print ("None");
return;
}
print ("Nameservers: " + ip_cfg.get_nameservers ());
print ("Domains: " + ip_cfg.get_domains ());
print ("Searches: " + ip_cfg.get_searches ());
if ((family == GLib.SYSDEF_AF_INET))
print ("WINS: " + ip_cfg.get_wins_servers ());
}
if (ARGV.length != 1) {
print ("Usage: get_ips.js <interface>");
System.exit (1);
}
let dev_iface = ARGV[0];
let c = NM.Client.new (null);
let dev = c.get_device_by_iface (dev_iface);
if (dev == null) {
print ("Device '%s' not found " + dev_iface);
System.exit (1);
}
print ("Device: " + dev_iface + " - " + dev.get_type_description ());
print ("---------------------------------------");
print ();
print ("IPv4 addresses:");
print ("---------------");
show_addresses (dev, GLib.SYSDEF_AF_INET);
print ();
print ("IPv4 gateway:");
print ("-------------");
show_gateway (dev, GLib.SYSDEF_AF_INET);
print ();
print ("IPv4 routes:");
print ("------------");
show_routes (dev, GLib.SYSDEF_AF_INET);
print ();
print ("IPv6 addresses:");
print ("---------------");
show_addresses (dev, GLib.SYSDEF_AF_INET6);
print ();
print ("IPv6 gateway:");
print ("-------------");
show_gateway (dev, GLib.SYSDEF_AF_INET6);
print ();
print ("IPv6 routes:");
print ("------------");
show_routes (dev, GLib.SYSDEF_AF_INET6);
print ();
print ("IPv4 DNS:");
print ("------------");
show_dns (dev, GLib.SYSDEF_AF_INET);
print ();
print ("IPv6 DNS:");
print ("------------");
show_dns (dev, GLib.SYSDEF_AF_INET6);
print ();
|