02_web/web-domains-alive.sh
#!/bin/bash

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Description:
#     This script takes a list of domain names and checks whether they resolve to an IP address.
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Author:
#     @itm4n
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Usage:
#     ./domains_alive.sh <DOMAINS_FILE>
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Example:
#     ./domains_alive.sh domains.txt
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Requirement:
#     'domains.txt' must contain one domain name per line
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DEBUG=0
COLOR_RST="\e[0m"
COLOR_RED_BOLD="\e[1;31m"
COLOR_GREEN_BOLD="\e[1;32m"
COLOR_YELLOW_BOLD="\e[1;33m"
COLOR_CYAN_BOLD="\e[1;36m"

function print_error() {
    echo -e "${COLOR_RED_BOLD}[-]${COLOR_RST} $1"
}

function usage() {
    echo "Usage:"
    echo "    $0 <DOMAINS_FILE>"
}

which host > /dev/null
if [ $? != 0 ]
then
    print_error "This script requires 'host'."
    exit
fi

if [ $# -lt 1 ]
then
    print_error "Missing argument"
    usage
    exit
fi

for h in $(cat "$1")
do
    host "$h" >/dev/null && echo $h
done
