How to determine if hostname belongs to specific network

Use Python script to determine if the hostname belongs to a specific network.

Python script

Use the following Python script to check if the hostname belongs to a specific network.

#!/usr/bin/env python3
# Check if hostname belongs to network
#
# Parameters:
#   network
#   hostname
#
# Return values:
#   0 - true
#   1 - false
import ipaddress
import socket
import argparse
# define and parse command-line options
parser = argparse.ArgumentParser(description='Check if hostname belongs to specified network')
parser.add_argument('--hostname', required=True, default='10.0.0.2', help='Define hostname')
parser.add_argument('--network', required=True, default='10.0.0.0/24', help='Define network`')
args = vars(parser.parse_args())

# parse hostname
try:
    ip_address=socket.gethostbyname(args['hostname'])
except:
    print("Error: Incorrect hostname")
    exit(11)
# parse network
try:
    ip_network = ipaddress.ip_network(args['network'])
except:
    print("Error: Incorrect network")
    exit(12)

# display result
if ipaddress.ip_address(ip_address) in ipaddress.ip_network(ip_network):
    print("[+] Host " + args['hostname'] + " [" + ip_address + "] does belong to " + args['network'])
    exit(0)
else:
    if args['hostname'] != ip_address:
        print("[-] Host " + args['hostname'] + " [" + ip_address + "] does not belong to " + args['network'])
    else:
        print("[-] Host " + args['hostname'] + " does not belong to " + args['network'])
    exit(1)

Sample usage

Determine if example.com belongs to 10.0.0.0/16 network.

$ python checkipnet.py --network 10.0.0.0/16 --hostname example.com
[-] Host example.com [93.184.216.34] does not belong to 10.0.0.0/16

Determine if 172.16.11.9 belongs to 172.16.11.0/24 network.

$ python checkipnet.py --network 172.16.11.0/24 --hostname 172.16.11.9
[+] Host 172.16.11.9 does belong to 172.16.11.0/24