From 386299ce57be9468e1afbefb3abd5771043b835e Mon Sep 17 00:00:00 2001 From: 2Shirt <2xShirt@gmail.com> Date: Wed, 2 Oct 2019 22:26:10 -0700 Subject: [PATCH] Added network functions --- scripts/wk/net.py | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/scripts/wk/net.py b/scripts/wk/net.py index e69de29b..ba4d869e 100644 --- a/scripts/wk/net.py +++ b/scripts/wk/net.py @@ -0,0 +1,52 @@ +"""WizardKit: Net Functions""" +# vim: sts=2 sw=2 ts=2 + +import re + +import psutil + +from wk.exe import run_program +from wk.std import show_data + +# REGEX +REGEX_VALID_IP = re.compile( + r'(10.\d+.\d+.\d+' + r'|172.(1[6-9]|2\d|3[0-1])' + r'|192.168.\d+.\d+)', + re.IGNORECASE) + + +# Functions +def is_connected(): + """Check for a valid private IP.""" + devs = psutil.net_if_addrs() + for dev in devs.values(): + for family in dev: + if REGEX_VALID_IP.search(family.address): + # Valid IP found + return True + # Else + return False + +def show_valid_addresses(): + """Show all valid private IP addresses assigned to the system.""" + devs = psutil.net_if_addrs() + for dev, families in sorted(devs.items()): + for family in families: + if REGEX_VALID_IP.search(family.address): + # Valid IP found + show_data(message=dev, data=family.address) + + +def speedtest(): + """Run a network speedtest using speedtest-cli.""" + cmd = ['speedtest-cli', '--simple'] + proc = run_program(cmd, check=False) + output = [line.strip() for line in proc.stdout.splitlines()] + output = [line.split() for line in output] + output = [(a, float(b), c) for a, b, c in output] + return [f'{a:<10}{b:6.2f} {c}' for a, b, c in output] + + +if __name__ == '__main__': + print("This file is not meant to be called directly.")