Noipy
Command line tool to update DDNS: No-IP, DuckDNS and DynDNS hosts IP
Install / Use
/learn @pv8/NoipyREADME
noipy: DDNS update tool
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 stored 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/
Licensing
Summary:
- All original source code is licensed under Apache-2.0
- All documentation is licensed under CC-BY-SA-4.0
- Automatically generated files, some configuration and data files are licensed under CC0-1.0
This repository is REUSE compliant. The copyright and licensing information for each file can be found in:
- The file header
- The REUSE.toml file
- The LICENSES directory
The licensing and REUSE compliance of each file can be verified with:
$ uvx reuse lint
or
$ uvx reuse spdx
Related Skills
node-connect
344.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
96.8kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
96.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
model-usage
344.1kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
