12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import dns.resolver
- import ifcfg
- import json
- import socket
- import struct
- import sys
- import time
-
- interfaces = ifcfg.interfaces()
-
- def exit_device():
- print("Possible devices:", ", ".join(interfaces.keys()))
- sys.exit(1)
-
-
- def gateway(device):
- with open("/proc/net/route") as fh:
- # skip header
- next(fh)
- for line in fh:
- routes = line.strip().split()
- if routes[0] == device:
- destination = socket.inet_ntoa(struct.pack("<L", int(routes[1], 16)))
- if destination != "0.0.0.0":
- continue
- return socket.inet_ntoa(struct.pack("<L", int(routes[2], 16)))
-
-
- try:
- DEVICE = sys.argv[1]
- except IndexError:
- print("You need to give the device name as first argument!\n")
- exit_device()
-
- HRN = { # Human Readable Name
- 'MAC': 'ether',
- 'MTU': 'mtu',
- 'IP': 'inet',
- 'Netmask': 'netmask',
- }
-
- try:
- info = interfaces[DEVICE]
- except KeyError:
- print("Unknown device:", DEVICE, "\n")
- exit_device()
- try:
- dns_resolver = dns.resolver.Resolver()
- except dns.resolver.NoResolverConfiguration:
- dns_server = []
- else:
- dns_server = dns_resolver.nameservers
-
- print('+' + 27 * '-' + '+')
- print("|%9s: %s" % ('Device', DEVICE) + (16 - len(DEVICE)) * ' ' + '|')
- print('+' + 27 * '-' + '+')
- for name in HRN:
- print("%10s: %s" % (name, info[HRN[name]]))
- print("%10s: %s" % ('Gateway', gateway(DEVICE)))
-
- try:
- print("%10s: %s" % ("Domain", socket.getfqdn().split('.', 1)[1]))
- except IndexError:
- print("%10s: None" % "Domain")
- for i, dns in enumerate(dns_server):
- print("%10s: %s" % ("DNS_%d" % (i + 1), dns))
|