ifconfig.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #!/usr/bin/env python
  2. # Copyright (c) 2009, Giampaolo Rodola'. All rights reserved.
  3. # Use of this source code is governed by a BSD-style license that can be
  4. # found in the LICENSE file.
  5. """
  6. A clone of 'ifconfig' on UNIX.
  7. $ python examples/ifconfig.py
  8. lo (speed=0MB, duplex=?, mtu=65536, up=yes):
  9. IPv4 address : 127.0.0.1
  10. broadcast : 127.0.0.1
  11. netmask : 255.0.0.0
  12. IPv6 address : ::1
  13. netmask : ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
  14. MAC address : 00:00:00:00:00:00
  15. broadcast : 00:00:00:00:00:00
  16. wlan0 (speed=0MB, duplex=?, mtu=1500, up=yes):
  17. IPv4 address : 10.0.3.1
  18. broadcast : 10.0.3.255
  19. netmask : 255.255.255.0
  20. IPv6 address : fe80::3005:adff:fe31:8698
  21. netmask : ffff:ffff:ffff:ffff::
  22. MAC address : 32:05:ad:31:86:98
  23. broadcast : ff:ff:ff:ff:ff:ff
  24. eth0 (speed=100MB, duplex=full, mtu=1500, up=yes):
  25. IPv4 address : 192.168.1.2
  26. broadcast : 192.168.1.255
  27. netmask : 255.255.255.0
  28. IPv6 address : fe80::c685:8ff:fe45:641
  29. netmask : ffff:ffff:ffff:ffff::
  30. MAC address : c4:85:08:45:06:41
  31. broadcast : ff:ff:ff:ff:ff:ff
  32. """
  33. from __future__ import print_function
  34. import socket
  35. import psutil
  36. af_map = {
  37. socket.AF_INET: 'IPv4',
  38. socket.AF_INET6: 'IPv6',
  39. psutil.AF_LINK: 'MAC',
  40. }
  41. duplex_map = {
  42. psutil.NIC_DUPLEX_FULL: "full",
  43. psutil.NIC_DUPLEX_HALF: "half",
  44. psutil.NIC_DUPLEX_UNKNOWN: "?",
  45. }
  46. def main():
  47. stats = psutil.net_if_stats()
  48. for nic, addrs in psutil.net_if_addrs().items():
  49. if nic in stats:
  50. print("%s (speed=%sMB, duplex=%s, mtu=%s, up=%s):" % (
  51. nic, stats[nic].speed, duplex_map[stats[nic].duplex],
  52. stats[nic].mtu, "yes" if stats[nic].isup else "no"))
  53. else:
  54. print("%s:" % (nic))
  55. for addr in addrs:
  56. print(" %-8s" % af_map.get(addr.family, addr.family), end="")
  57. print(" address : %s" % addr.address)
  58. if addr.broadcast:
  59. print(" broadcast : %s" % addr.broadcast)
  60. if addr.netmask:
  61. print(" netmask : %s" % addr.netmask)
  62. print("")
  63. if __name__ == '__main__':
  64. main()