Skip to content

pv8/noipy

Repository files navigation

noipy: DDNS update tool

CI Snap Status Snap Trending

Command line tool to update DDNS hosts IP address via update API. Initially the tool was designed to update IP address only on No-IP DDNS provider. But now noipy has support for the following DDNS providers:

Installation

Install with pip:

$ pip install noipy

Or with Snappy on supported distros:

$ sudo snap install noipy

Note: noipy will also install the Requests HTTP library.

Usage

Basic usage of noipy command line tool:

$ noipy -u <your username> -p <your password> -n <your hostname on DDNS provider>
        --provider {generic|noip|dyn|duck}

For DuckDNS provider, the command line would look like this:

$ noipy -u <your token> -n <your DuckDNS domain> --provider duck

Or you can just use --hostname (-n) and --provider arguments if you have previously stored your auth information with --store option.

$ noipy --hostname <your hostname on DDNS provider> --provider {generic|noip|dyn| duck}

You can also specify a custom DDNS URL (thanks to @jayennis22):

$ noipy --hostname <your hostname on DDNS provider> [--provider  generic]
        --url <custom DDNS URL>

It is also possible to inform an IP address other than the machine's current:

$ noipy --hostname <your hostname on DDNS provider> 127.0.0.1

If --provider option is not informed, generic will be used as provider.

For details:

$ noipy --help

Storing auth information

With --store option it is possible to store login information. The information is sotred in $HOME/.noipy/ directory:

$ noipy --store --username <your username> --password <your password> \
    --provider {generic|noip|dyn| duck}

Or simply:

$ noipy --store --provider {generic|noip|dyn| duck}

And type username and password when required.

Note: password is stored simply encoded with Base64 method and is not actually encrypted!

Running tests

Using uv (recommended)

# Install uv (if not already installed)
$ pipx install uv
# Or see https://docs.astral.sh/uv/getting-started/installation/

# Sync test dependencies
$ uv sync --extra tests

# Run tests with tox
$ uv run tox

Using pip

Install test dependencies and run tests:

$ pip install -e ".[tests]"
$ tox

Linting

Using uv (recommended)

# Sync linting dependencies
$ uv sync --extra lint

# Run linting with tox
$ uv run tox -e lint

Using pip

Install linting dependencies and check code style:

$ pip install -e ".[lint]"
$ tox -e lint

Type checking

noipy uses type hints to improve code quality and maintainability.

Using uv (recommended)

# Sync type checking dependencies
$ uv sync --extra typing

# Run type checking with mypy
$ uv run mypy noipy/

Using pip

Install type checking dependencies and run mypy:

$ pip install -e ".[typing]"
$ mypy noipy/

Copyright & License

License

Copyright (c) 2013 Pablo Vieira (pv8).

About

Command line tool to update DDNS: No-IP, DuckDNS and DynDNS hosts IP

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published