Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Lvl4Sword/86e73ca79bea24c9e05e35fbd1de45aa to your computer and use it in GitHub Desktop.
Save Lvl4Sword/86e73ca79bea24c9e05e35fbd1de45aa to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
# While systemd has the prefixes set in the following way:
# en = ethernet
# wl = wlan
# ww = wwan
# There are still instances where an interface won't have these.
# Which, is why I made this script.
import os
ethernet_interfaces = []
wireless_interfaces = []
def get_interfaces():
interfaces = os.listdir('/sys/class/net')
return interfaces
def detect_virtual_interfaces(interfaces):
for each in interfaces:
real_path = os.path.realpath(os.path.join('/sys/class/net/', each))
if '/devices/virtual/net/' in real_path:
interfaces.remove(each)
return interfaces
def detect_ethernet(clean_interfaces):
for each in clean_interfaces:
try:
with open('/sys/class/net/{0}/speed'.format(each), 'r') as speed_file:
for line in speed_file:
ethernet_interfaces.append(each)
except OSError:
pass
def detect_wireless(clean_interfaces):
for each in clean_interfaces:
if os.path.isdir('/sys/class/net/{0}/wireless'.format(each)):
wireless_interfaces.append(each)
if __name__ == '__main__':
interfaces = get_interfaces()
clean_interfaces = detect_virtual_interfaces(interfaces)
detect_ethernet(clean_interfaces)
if not ethernet_interfaces:
print('No ethernet detected!')
else:
print('Ethernet:', ', '.join(ethernet_interfaces))
detect_wireless(clean_interfaces)
if not wireless_interfaces:
print('No wireless detected!')
else:
print('Wireless:', ', '.join(wireless_interfaces))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment