Last active
June 7, 2024 21:02
-
-
Save holman57/337941d2b2430d648fbcf11a0e20fd9d to your computer and use it in GitHub Desktop.
Check for given arguments, identify network range for the specified IP address(es), ping discovered IP address(es), identify IP address(es) of the specified domain; and lastly, list available options.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| if [ $# -eq 0 ] | |
| then | |
| echo -e "You need to specify the target domain.\n" | |
| echo -e "Usage:" | |
| echo -e "\t$0 <domain>" | |
| exit 1 | |
| else | |
| domain=$1 | |
| fi | |
| function network_range { | |
| for ip in $ipaddr | |
| do | |
| netrange=$(whois $ip | grep "NetRange\|CIDR" | tee -a CIDR.txt) | |
| cidr=$(whois $ip | grep "CIDR" | awk '{print $2}') | |
| cidr_ips=$(prips $cidr) | |
| echo -e "\nNetRange for $ip:" | |
| echo -e "$netrange" | |
| done | |
| } | |
| function ping_host { | |
| hosts_up=0 | |
| hosts_total=0 | |
| echo -e "\nPinging host(s):" | |
| for host in $cidr_ips | |
| do | |
| stat=1 | |
| while [ $stat -eq 1 ] | |
| do | |
| ping -c 2 $host > /dev/null 2>&1 | |
| if [ $? -eq 0 ] | |
| then | |
| echo "$host is up." | |
| ((stat--)) | |
| ((hosts_up++)) | |
| ((hosts_total++)) | |
| else | |
| echo "$host is down." | |
| ((stat--)) | |
| ((hosts_total++)) | |
| fi | |
| done | |
| done | |
| echo -e "\n$hosts_up out of $hosts_total hosts are up." | |
| } | |
| hosts=$(host $domain | grep "has address" | cut -d" " -f4 | tee discovered_hosts.txt) | |
| echo -e "Discovered IP address:\n$hosts\n" | |
| ipaddr=$(host $domain | grep "has address" | cut -d" " -f4 | tr "\n" " ") | |
| echo -e "Additional options available:" | |
| echo -e "\t1) Identify the corresponding network range of target domain." | |
| echo -e "\t2) Ping discovered hosts." | |
| echo -e "\t3) All checks." | |
| echo -e "\t*) Exit.\n" | |
| read -p "Select your option: " opt | |
| case $opt in | |
| "1") network_range ;; | |
| "2") ping_host ;; | |
| "3") network_range && ping_host ;; | |
| "*") exit 0 ;; | |
| esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment