#!/usr/bin/env python3 import argparse import tempfile import os import socket import subprocess import sys parser = argparse.ArgumentParser( description="Check that $HOSTALIASES is working" ) parser.add_argument( "--child", action="store_true", help="run in child mode, for internal use only", ) parser.add_argument( "-v", action="store_true", help="verbose mode", ) args = parser.parse_args() def dprint(*a): if args.v: print(*a) if args.child: dprint("child mode, getting hosts") lo = socket.gethostbyname("localhost") ts = socket.gethostbyname("testserver") dprint(ts, lo, ts == lo) if ts != lo: sys.exit(1) else: dprint("## parent mode") # Create the hostaliases file. fd = tempfile.NamedTemporaryFile(mode="w+") fd.write("testserver localhost\n") fd.flush() # Re-execute ourselves with --child, to do the check. env = dict(os.environ) env["HOSTALIASES"] = fd.name cargs = [sys.argv[0], "--child"] if args.v: cargs.append("-v") cmd = subprocess.run( cargs, env=env, text=True, encoding="ascii", stdout=subprocess.PIPE, stderr=subprocess.STDOUT, ) dprint("## child output:") dprint(cmd.stdout) dprint("## child returned", cmd.returncode) sys.exit(cmd.returncode)