Skip to main content

A Python client for managing DNS records on a Pi-hole server via SSH.

Project description

PiHoleClient

alt text

This Python module provides a class PiHoleClient that allows you to interact with a Pi-hole server via SSH. It uses the paramiko library to establish the SSH connection.

Features

  • Create DNS records
  • Push DNS records to the Pi-hole server
  • Delete DNS records from the Pi-hole server
  • Read the custom list of DNS records from the Pi-hole server
  • Close the SSH connection

Usage

First, you need to create an instance of PiHoleClient with the SSH details of your Pi-hole server:

from piholesdk import PiHoleClient

pihole_node =  {"ssh_ip_address":"192.168.178.100",
               "ssh_username":"root",
               "ssh_password":"password"}

client = PiHoleClient(**pihole_node)

You can then use the methods provided by the PiHoleClient class to interact with your Pi-hole server.

client.read_custom_list()
{'status': True,
 'message': 'Retrieved A record list.',
 'data': {'netbox.domain.com': '192.168.178.102',
  'guacamole.domain.com': '192.168.178.102',
  'pfsense.domain.com': '192.168.178.1',
  'pihole.domain.com': '192.168.178.100',
  'vault.domain.com': '192.168.178.102',
  'jenkins.domain.com': '192.168.178.102',
  'grafana.domain.com': '192.168.178.102',
  'rabbitmq.domain.com': '192.168.178.102',
  'portainer.domain.com': '192.168.178.102',
  'proxmox03.domain.com': '192.168.178.32',
  'proxmox01.domain.com': '192.168.178.30',
  'proxmox02.domain.com': '192.168.178.31',
  'yangsuite.domain.com': '192.168.178.102',
  'homeassistant.domain.com': '192.168.178.161',
  'prometheus.domain.com': '192.168.178.103',
  'ubuntu.domain.com': '192.168.178.97'}}

Creating a DNS Record

record = PiHoleClient.create_dns_record(hostname="jur", ip_address="6.6.6.9", domain="domain.com")

Pushing a DNS A Record to PiHole Server

client.push_dns_record(record)
Out[8]: {'status': True, 'message': 'A record added successfully.'}

Deleting a DNS Record

client.delete_dns_record(record)
{'status': True, 'message': 'A Record deleted successfully.'}

Dependencies

Only Paramiko library

Note

Please ensure that the user you are connecting with has the necessary permissions to perform the operations on the Pi-hole server.

For more information, visit the PyPI page.

You can also connect with me on LinkedIn.

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

piholesdk-0.1.3.tar.gz (3.0 kB view details)

Uploaded Source

Built Distribution

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

piholesdk-0.1.3-py3-none-any.whl (3.4 kB view details)

Uploaded Python 3

File details

Details for the file piholesdk-0.1.3.tar.gz.

File metadata

  • Download URL: piholesdk-0.1.3.tar.gz
  • Upload date:
  • Size: 3.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for piholesdk-0.1.3.tar.gz
Algorithm Hash digest
SHA256 2ee63169b9edbaf57839d58016fd9ef89adfc45f0955bed07b1a3e1213fd7bbf
MD5 21cc6b938b11142c8c8d4f73edf150ea
BLAKE2b-256 d467467f02a5665ad7ef5255449a4c210353aa4e8ea9e59de0b211944230ef0f

See more details on using hashes here.

File details

Details for the file piholesdk-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: piholesdk-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 3.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for piholesdk-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 b616a66b4f015480d0198ebbfd10090cc20902cf5d48a0301728c257f9f8b862
MD5 9bbcc84ffab8fb0da6757d3725cc5ab0
BLAKE2b-256 40dd59823b36ef78358de25025aef26db83386b1afc1a20e09bd65a295e495cc

See more details on using hashes here.

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