7
"""A clone of 'ifconfig' on UNIX.
9
$ python3 scripts/ifconfig.py
11
stats : speed=0MB, duplex=?, mtu=65536, up=yes
12
incoming : bytes=1.95M, pkts=22158, errs=0, drops=0
13
outgoing : bytes=1.95M, pkts=22158, errs=0, drops=0
14
IPv4 address : 127.0.0.1
17
netmask : ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
18
MAC address : 00:00:00:00:00:00
21
stats : speed=0MB, duplex=?, mtu=1500, up=yes
22
incoming : bytes=3.48M, pkts=65470, errs=0, drops=0
23
outgoing : bytes=164.06M, pkts=112993, errs=0, drops=0
24
IPv4 address : 172.17.0.1
25
broadcast : 172.17.0.1
27
IPv6 address : fe80::42:27ff:fe5e:799e%docker0
28
netmask : ffff:ffff:ffff:ffff::
29
MAC address : 02:42:27:5e:79:9e
30
broadcast : ff:ff:ff:ff:ff:ff
33
stats : speed=0MB, duplex=?, mtu=1500, up=yes
34
incoming : bytes=7.04G, pkts=5637208, errs=0, drops=0
35
outgoing : bytes=372.01M, pkts=3200026, errs=0, drops=0
36
IPv4 address : 10.0.0.2
37
broadcast : 10.255.255.255
39
IPv6 address : fe80::ecb3:1584:5d17:937%wlp3s0
40
netmask : ffff:ffff:ffff:ffff::
41
MAC address : 48:45:20:59:a4:0c
42
broadcast : ff:ff:ff:ff:ff:ff
45
from __future__ import print_function
50
from psutil._common import bytes2human
54
socket.AF_INET: 'IPv4',
55
socket.AF_INET6: 'IPv6',
56
psutil.AF_LINK: 'MAC',
60
psutil.NIC_DUPLEX_FULL: "full",
61
psutil.NIC_DUPLEX_HALF: "half",
62
psutil.NIC_DUPLEX_UNKNOWN: "?",
67
stats = psutil.net_if_stats()
68
io_counters = psutil.net_io_counters(pernic=True)
69
for nic, addrs in psutil.net_if_addrs().items():
73
print(" stats : ", end='')
75
"speed=%sMB, duplex=%s, mtu=%s, up=%s"
78
duplex_map[st.duplex],
80
"yes" if st.isup else "no",
83
if nic in io_counters:
85
print(" incoming : ", end='')
87
"bytes=%s, pkts=%s, errs=%s, drops=%s"
89
bytes2human(io.bytes_recv),
95
print(" outgoing : ", end='')
97
"bytes=%s, pkts=%s, errs=%s, drops=%s"
99
bytes2human(io.bytes_sent),
106
print(" %-4s" % af_map.get(addr.family, addr.family), end="")
107
print(" address : %s" % addr.address)
109
print(" broadcast : %s" % addr.broadcast)
111
print(" netmask : %s" % addr.netmask)
113
print(" p2p : %s" % addr.ptp)
117
if __name__ == '__main__':