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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

Supported by

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