view dns_check.py @ 288:3af02e24eaf9

minor
author drewp@bigasterisk.com
date Sun, 21 Apr 2024 17:01:13 -0700
parents bf1573dd1947
children
line wrap: on
line source

# run key dns lookups everywhere

from pyinfra import host
from pyinfra.operations import server


def check(name, addr):
    server.shell(commands=[
        # note: one big string
        f"out=`dnsget -q {name}`; "
        f'[ -n "$out" ] || exit 1; '
        f"if [ $out != {addr} ]; then echo got $out >&2 ; exit 1; fi"
    ])


'''
idea: read a file that looks like this:

on host:   bang       dash      slash     prime
lookup:
bang       127.0.1.1  10.1.0.1  10.1.0.1  10.5.0.1
bang5      10.5.0.1   10.5.0.1  10.5.0.1  10.5.0.1
dash       10.1.0.5   127.0.1.1 10.1.0.5  10.5.0.5
bang.bigasterisk.com
bang.bigasterisk.com.
prime
projects.bigasterisk.com
etc

'''

if host.name in ['dash', 'bang', 'slash']:
    check('dash', '10.2.0.212')
    check('projects.bigasterisk.com', '10.2.0.1')
elif host.name in ['prime']:
    check('dash', '10.5.0.5')
    check('projects.bigasterisk.com', '10.2.0.1')  # expected the public addr, but fine
else:
    check('dash', '10.2.0.212')
    check('projects.bigasterisk.com', '10.2.0.1')

if host.name in ['prime']:
    check('bang', '10.5.0.1')
    check('slash', '10.5.0.6')
else:
    check('bang', '10.2.0.1')
    check('slash', '10.2.0.145')

check('bang5', '10.5.0.1')
check('prime', '10.5.0.2')