Skip to main content

Network helper tools

Project description

dt-net

dt-net is a Python library to simplify network interactions. It has been tested in both Windows and Linux.

Features include:

  • ip_info_helper - Retrieve info for local and internet IP addresses.
    • Uses ipinfo.io API to retrive IP related information.
    • Has local cache for performance and minimizing API calls.
    • For WAN IPs:
      • ip, hostname, city, region, country, GPS location, zip-code, timezone
    • For LAN IPs:
      • ip, hostname, bogon (identifies as local IP), mac, mac vendor
    • A free **API token** is required to call the API
    • Tokens can be aquired by going to https://ipinfo.io/signup
    • Register token via dt_tools.cli.set_iphelper_token.py
  • net_helper - Helper methods for
    • IP routines: check validity, type (IPv4/IPv6), wan IP, LAN IP,...
    • Lookup routines: ip to hostname, ip to mac,...
    • LAN Scan: list of LAN clients.
  • wol - Send WOL packets to target hosts

Installation

Download source code from githup via git

git clone https://github.com/JavaWiz1/dt-net.git

Note, when downloading source, Poetry was used as the package manager. Poetry handles creating the virtual environment and all dependent packages installs with proper versions.

To setup virtual environment with required production AND dev (sphinx) dependencies:

poetry install

with ONLY production packages (no sphinx):

poetry install --without dev

use the package manager pip to install dt-console.

pip install dt-net [--user]

Usage

A demo cli has been included to show how these modules can be used. The demo showcases how to use the many functions in each of the modules.

See dt_tools.cli.dt_net_demos.py for detailed demo examples (runnable demo)

To run the demo type:

python -m dt_tools.cli.dt_net_demos

# or if via source (and poetry)
poetry run python -m dt_tools.cli.dt_net_demos

Developer package documentation contains details on all classes and supporting code (i.e. constant namespaces and enums) use for method calls. Docs can be found here.

Main classes/modules Overview

ConsoleHelper

ConsoleHelper provides methods for managing the console windows.

    from dt_tools.console.console_helper import ConsoleHelper
    import time

    console.clear_screen(cursor_home=True)

    console_size = console.get_console_size()
    row, col = console.cursor_current_position()
    print(f'Console size: {console_size}, cur pos: {row},{col}')

    console.print_at(row=3, col=5, msg="Here we are at row 3, column 5", eol='\n\n')
    time.sleep(.5)

    blue = console.cwrap('blue', cc.CBLUE)
    brown = console.cwrap('brown', cc.CBEIGE)
    green = console.cwrap('green', cc.CGREEN)
    text = f"The {blue} skies and the {brown} bear look wonderful in the {green} forest!"
    print(text)

    row, col = console.cursor_current_position()
    print(f'         at ({row},{col})', flush=True)
    time.sleep(2)
    console.print_at(row,col,'Finished')

ConsoleInputHelper

ConsoleInputHelper provides a customizable input prompt.

    from dt_tools.console.console_helper import ConsoleInputHelper

    console_input = ConsoleInputHelper()

    resp = console_input.get_input_with_timeout(prompt='Do you want to continue (y/n) > ',
                                                valid_responses=console_input.YES_NO_RESPONSE,
                                                default='y',
                                                timeout_secs=5)
    print(f'  returns: {resp}')

MessageBox

Message box implements Alert, Confirmation, Input Prompt, Password Prompt message boxes.

    import dt_tools.console.msgbox as msgbox

    resp = msgbox.alert(text='This is an alert box', title='ALERT no timeout')
    print(f'  mxgbox returns: {resp}')

    resp = msgbox.alert(text='This is an alert box', title='ALERT w/Timeout', timeout=3000)
    print(f'  mxgbox returns: {resp}')

ProgressBar

ProgressBar is an easy to use, customizable console ProgressBar which displays percentage complete and elapsed time.

    from dt_tools.console.progress_bar import ProgressBar
    import time

    print('Progress bar...')
    pbar = ProgressBar(caption="Test bar 1", bar_length=40, max_increments=50, show_elapsed=False)
    for incr in range(1,51):
        pbar.display_progress(incr, f'incr [{incr}]')
        time.sleep(.15)

    print('\nProgress bar with elapsed time...')
    pbar = ProgressBar(caption="Test bar 2", bar_length=40, max_increments=50, show_elapsed=True)
    for incr in range(1,51):
        pbar.display_progress(incr, f'incr [{incr}]')
        time.sleep(.15)

Spinner

Spinner is an easy to use, customizable console Spinner control which displays spinning icon and elapsed time.

    from dt_tools.console.spinner import Spinner, SpinnerType
    import time

    # Example to display all spinner types for approx 5 sec. apiece
    for spinner_type in SpinnerType:
        spinner = Spinner(caption=spinner_type, spinner=spinner_type, show_elapsed=True)
        spinner.start_spinner()

        # Do long task...
        for cnt in range(1,20):
            time.sleep(.25)

        spinner.stop_spinner()

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dt_net-0.1.2.tar.gz (18.0 kB view hashes)

Uploaded Source

Built Distribution

dt_net-0.1.2-py3-none-any.whl (20.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page