Skip to main content

๐Ÿ” nbpull

CI Python 3.13+ License: GPL v3 Typed NetBox 4.4+

Read-only CLI tool to pull IPAM data from NetBox.

๐Ÿ”’ Safety guarantee: nbpull only reads data from NetBox. No POST / PUT / PATCH / DELETE requests are ever made. The HTTP client is hardcoded to GET-only โ€” this invariant is enforced by code structure and verified by tests.

๐ŸŒ NetBox compatibility: Tested against NetBox Cloud v4.4.10. Compatible with NetBox v3.x+ (legacy site field) and v4.2+ (generic scope relation). The Prefix model transparently handles both via the resolved_site property.


โœจ Features

  • ๐Ÿ“ก Prefixes โ€” list and filter IPAM prefixes
  • ๐Ÿ–ฅ๏ธ IP Addresses โ€” query IP address allocations
  • ๐Ÿท๏ธ VLANs โ€” browse VLAN assignments
  • ๐Ÿ”€ VRFs โ€” inspect VRF instances
  • ๐Ÿ“Š Aggregates โ€” list top-level IP space by RIR
  • ๐Ÿข Sites โ€” browse DCIM sites
  • ๐Ÿ–ง Devices โ€” query DCIM devices
  • ๐Ÿ›๏ธ Tenants โ€” list tenancy tenants
  • ๐ŸŒ RFC 1918 โ€” inventory Global VRF RFC 1918 prefixes with mapping status
  • ๐Ÿ“ฆ Batch queries โ€” check many prefixes at once from a TOML file
  • ๐ŸŽจ Rich table output (default), JSON saved to a file (--format json), or CSV (--format csv)
  • ๐Ÿ”Ž Filter by status, VRF, tenant, site, tag, or free-text search
  • โšก Async HTTP with automatic pagination
  • ๐Ÿ”’ Strict typing (mypy strict mode + Pydantic v2)

๐Ÿ“ฆ Installation

uv tool install nbpull

With pipx

pipx install nbpull

With pip

pip install nbpull

From source

git clone https://github.com/Champion2005/nbpull.git
cd nbpull
make install   # uses uv sync

๐Ÿš€ Quick Start

# 1. Run the interactive setup wizard
nbpull setup

# Or configure manually:
export NETBOX_URL=https://netbox.example.com
export NETBOX_TOKEN=your_read_only_token
# Or: cp .env.example .env && edit .env

# 2. Pull data
nbpull prefixes
nbpull prefixes --status active --vrf Production
nbpull ip-addresses --prefix 10.0.0.0/24
nbpull vlans --site DC1
nbpull vrfs --tenant Ops
nbpull aggregates --rir ARIN
nbpull sites --status active
nbpull devices --role "Core Router"
nbpull tenants
nbpull rfc1918
nbpull batch-prefixes --file my_prefixes.toml --status-only

๐Ÿ“‹ Commands

Command Description
nbpull setup Interactive setup wizard
nbpull prefixes List IPAM prefixes
nbpull ip-addresses List IP addresses
nbpull vlans List VLANs
nbpull vrfs List VRFs
nbpull aggregates List IPAM aggregates (top-level space by RIR)
nbpull sites List DCIM sites
nbpull devices List DCIM devices
nbpull tenants List tenancy tenants
nbpull rfc1918 Inventory Global VRF RFC 1918 prefixes with mapping status
nbpull location-report Location-to-IP report โ€” mapped prefixes with PRD and general columns
nbpull batch-prefixes Query multiple prefixes from a TOML file

Common Flags

Flag Description
--status Filter by status (active, reserved, deprecated, container)
--vrf Filter by VRF name
--tenant Filter by tenant name
--site Filter by site name
--tag Filter by tag slug
--search / -s Free-text search
--limit / -l Max results (default: 50)
--format / -f Output format: table (default), json (writes to file), or csv
--output / -o JSON output file path (prompts with default if omitted)
--verbose / -v Enable debug logging

See the full command reference for all options.

โš™๏ธ Configuration

Set these in .env or as environment variables:

Variable Required Default Description
NETBOX_URL โœ… โ€” NetBox instance URL
NETBOX_TOKEN โœ… โ€” API token (read-only recommended)
NETBOX_PAGE_SIZE โŒ 100 Results per API page
NETBOX_TIMEOUT โŒ 30 Request timeout (seconds)
NETBOX_VERIFY_SSL โŒ true Verify SSL certificates

See docs/configuration.md for details on token setup and SSL options.

๐Ÿ“ฆ Batch Queries

Create a TOML file to query multiple prefixes in one run:

prefixes = [
    "10.0.0.0/8",
    "172.16.0.0/12",
    "192.168.0.0/16",
]

[filters]
# status = "active"
# vrf = "Production"
nbpull batch-prefixes --file prefixes.toml --status-only

๐Ÿ“ Architecture

src/netbox_data_puller/
โ”œโ”€โ”€ cli.py          # Typer commands + filtering + JSON file output
โ”œโ”€โ”€ client.py       # Async GET-only NetBox API client
โ”œโ”€โ”€ config.py       # Pydantic Settings (.env)
โ”œโ”€โ”€ formatters.py   # Rich table renderers
โ””โ”€โ”€ models/         # Pydantic models per resource
    โ”œโ”€โ”€ __init__.py
    โ”œโ”€โ”€ common.py   # Shared field types / base classes
    โ”œโ”€โ”€ aggregate.py
    โ”œโ”€โ”€ device.py
    โ”œโ”€โ”€ ip_address.py
    โ”œโ”€โ”€ prefix.py
    โ”œโ”€โ”€ site.py
    โ”œโ”€โ”€ tenant.py
    โ”œโ”€โ”€ vlan.py
    โ””โ”€โ”€ vrf.py

See docs/architecture.md for a full breakdown.

๐Ÿ› ๏ธ Development

Prerequisites

  • Python 3.13+
  • uv โ€” fast Python package manager

Setup

git clone https://github.com/Champion2005/nbpull.git
cd nbpull
make install    # Install dependencies

Commands

make all        # format โ†’ lint โ†’ typecheck โ†’ test
make test       # unit tests (no network)
make lint       # ruff linter
make format     # auto-format with ruff
make typecheck  # mypy strict mode
make test-integration  # hits real NetBox API

Running Tests

Unit tests use mocked HTTP responses and require no network access:

make test

Integration tests require NETBOX_URL and NETBOX_TOKEN:

make test-integration

๐Ÿค Contributing

Contributions are welcome! Please read CONTRIBUTING.md before opening a PR.

๐Ÿ“ Changelog

See CHANGELOG.md for a history of changes.

๐Ÿ“„ License

This project is licensed under the GNU General Public License v3.0 โ€” see the LICENSE file for details.

๐Ÿ™ Acknowledgements

  • NetBox โ€” the leading open-source IPAM/DCIM platform
  • Typer โ€” CLI framework
  • Rich โ€” beautiful terminal formatting
  • httpx โ€” async HTTP client
  • Pydantic โ€” data validation

Metadata

Release files for nbpull 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nbpull 0.4.0
File Size Uploaded Provenance
nbpull-0.4.0.tar.gz 23.1 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for nbpull 0.4.0
File Interpreter ABI Platform
nbpull-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 52.7 kB

Release files / nbpull-0.4.0.tar.gz

Download URL nbpull-0.4.0.tar.gz
Size 23.1 kB
Tags Source
SHA-256 checksum
How to use checksums
284f549a47dd8e7f65cde1f7877a30bc16e6e0035459df3f2c520b67b955dcce
BLAKE2b-256 checksum
How to use checksums
e658ccb546c582c9b9bd4747f3ffa84ed49c7d5a7a50a211fbb6f0681b41ddaf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 5, 2026.

Transparency log

Release files / nbpull-0.4.0-py3-none-any.whl

Download URL nbpull-0.4.0-py3-none-any.whl
Size 29.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e336885a06f2183fbf4c60c2710f10672dbb2b500e7bb47d6cc977c11a997877
BLAKE2b-256 checksum
How to use checksums
7366a967e1845a758d4b948ad95fc57e93b7292488f82f7e0141bd5b3fc6a76c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 5, 2026.

Transparency log

Security for nbpull 0.4.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for nbpull-0.4.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 5, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page