Skip to main content

Command line tool for DDNS IP address updating.

Project description

noipy: DDNS update tool

https://img.shields.io/pypi/v/noipy.svg https://img.shields.io/pypi/pyversions/noipy.svg Snap Status Snap Trending https://api.travis-ci.org/pv8/noipy.svg?branch=master https://codecov.io/gh/pv8/noipy/branch/master/graph/badge.svg Code Health Maintainability https://zenodo.org/badge/doi/10.5281/zenodo.29017.svg?style=flat-square

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

Install tests dependencies (tox and flake8):

$ pip install -r requirements_dev.txt

Test the code against all supported Python versions and check it against PEP8 with tox:

$ tox

Check PEP8 only:

$ tox -e pep8

Changelog

2.0.0 (2025-06-28)

  • BREAKING CHANGE: Dropped support for Python 2.7 and Python 3.6/3.7

  • BREAKING CHANGE: Now requires Python 3.8 or higher

  • Remove Python 2/3 compatibility code (from __future__ import print_function, raw_input)

  • Update dependencies to modern versions: - pytest: 4.6.9 → 7.4.0 (Python 3.13 compatible) - flake8: 3.8.4 → 6.1.0 - tox: 3.25.0 → 4.7.0

  • Add support for Python 3.10, 3.11, 3.12, 3.13

  • Fix tox configuration for modern Python versions

  • Remove argparse conditional import (built-in since Python 3.2)

  • GitHub Actions workflow modernization

  • Release Drafter automation for better release notes

1.5.3 (2020-02-09)

1.5.2 (2019-04-03)

1.5.1 (2017-12-19)

  • Support for Python 3.6

  • Minor refactor related to code style

  • Improved integration with codeclimate

1.5.0 (2016-10-30)

  • Automatic deploy to PyPI via Travis CI

  • Minor refactor

  • Dropped support for Python 3.2

1.4.4 (2016-04-11)

  • Bugfix

1.4.3 (2015-10-15)

  • Included User-Agent in request Header

  • Improvements on plugins test cases

  • Changed code coverage service from Coveralls to Codecov

1.4.2 (2015-08-22)

  • Bugfix: storing auth credentials properly from stdin

  • Test case for --store option getting username/password from stdin

1.4.0 (2015-04-25)

1.3.1 (2014-12-19)

  • Send update to DDNS only if IP address has changed

1.3.0 (2014-12-16)

  • Support for custom DDNS URL via --url parameter

1.2.3 (2014-10-10)

  • Unit tests improvements and PluginsTest bug fixes

  • Custom config directory feature bug fix (--config argument)

1.2.2 (2014-07-03)

  • PEP8’d code (Closes #5)

  • Switched to Apache License, Version 2.0

  • Unit test improvement

  • Minor feature: custom config directory via -c or --config argument.

1.2.1 (2014-06-30)

  • Bug fix (execution via command line. issue #5)

1.2.0 (2014-04-21)

1.1.4 (2013-08-29)

1.1.3 (2013-07-24)

  • Python 3.3 compatibility

1.1.0 (2013-05-15)

1.0.1 (2013-05-10)

  • Added flexibility to DNS updater with abc.ABCMeta

  • Code organization

  • Manual settings file removed (auth info can be stored via command line)

0.1.0 (2013-03-22)

  • Conception

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

noipy-2.0.0.tar.gz (19.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

noipy-2.0.0-py2.py3-none-any.whl (15.0 kB view details)

Uploaded Python 2Python 3

File details

Details for the file noipy-2.0.0.tar.gz.

File metadata

  • Download URL: noipy-2.0.0.tar.gz
  • Upload date:
  • Size: 19.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for noipy-2.0.0.tar.gz
Algorithm Hash digest
SHA256 e30da09d61bd7609b6d915846bb1df0ccce86391d53bacdc6de09488260fe709
MD5 c3ce0d542c1236fa95d5c4339dccb288
BLAKE2b-256 e8ddd91f2f715d3ad42fe7fd3450ca66a3bc14f6f0ebb8b3cec884be850599db

See more details on using hashes here.

Provenance

The following attestation bundles were made for noipy-2.0.0.tar.gz:

Publisher: publish.yml on pv8/noipy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file noipy-2.0.0-py2.py3-none-any.whl.

File metadata

  • Download URL: noipy-2.0.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 15.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for noipy-2.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 fd70d95747cd26a81abebb4fbdbb5352c69cd5e0ac6ecb195429b043366a13d9
MD5 5e800b9cee975b942cc340454b3529be
BLAKE2b-256 f8da5c659443df1ef7feb80680f6ba496691ac89f2c8fe04bc1dc090c07ce2ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for noipy-2.0.0-py2.py3-none-any.whl:

Publisher: publish.yml on pv8/noipy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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