Shell Script To Get Data Center Information, IP Owner, City and Country From Domain Name

by on March 12, 2010 · 15 comments

  1. #!/bin/bash
  2. # A sample shell script to print domain ip address hosting information such as
  3. # Location of server, city, ip address owner, country and network range.
  4. # This is useful to track spammers or research purpose.
  5. # -------------------------------------------------------------------------
  6. # Copyright (c) 2006 nixCraft project <http://cyberciti.biz/fb/>
  7. # This script is licensed under GNU GPL version 2.0 or above
  8. # -------------------------------------------------------------------------
  9. # This script is part of nixCraft shell script collection (NSSC)
  10. # Visit http://bash.cyberciti.biz/ for more information.
  11. # -------------------------------------------------------------------------
  12. # Last updated on Mar/05/2010
  13. # -------------------------------------------------------------------------
  14.  
  15. # Get all domains
  16. _dom=$@
  17.  
  18. # Die if no domains are given
  19. [ $# -eq 0 ] && { echo "Usage: $0 domain1.com domain2.com ..."; exit 1; }
  20. for d in $_dom
  21. do
  22. _ip=$(host $d | grep 'has add' | head -1 | awk '{ print $4}')
  23. [ "$_ip" == "" ] && { echo "Error: $d is not valid domain or dns error."; continue; }
  24. echo "Getting information for domain: $d [ $_ip ]..."
  25. whois "$_ip" | egrep -w 'OrgName:|City:|Country:|OriginAS:|NetRange:'
  26. echo ""
  27. done

Run script as follows:
./script.sh cyberciti.biz google.com
Sample outputs:

Getting information for domain: cyberciti.biz [ 74.86.48.99 ]...
OrgName:    SoftLayer Technologies Inc.
City:       Dallas
Country:    US
NetRange:   74.86.0.0 - 74.86.255.255
OriginAS:   AS36351
Getting information for domain: google.com [ 209.85.231.104 ]...
OrgName:    Google Inc.
City:       Mountain View
Country:    US
NetRange:   209.85.128.0 - 209.85.255.255


4000+ howtos and counting! If you enjoyed this article, join 45000+ others and get free email updates!

Click here to subscribe via email.

  • Kas

    Use with caution, whois database server may ban you if you abuse of theyr services.

  • Silviu

    Have dome a little update. here are the datails

  • Silviu

    A small modification in the script. This allows to handle more ip addresses on the domains on which this is available (eg. google.com or yahoo.com)

    Link

  • Adrian

    Nice script good job cheep it going

  • rno

    - You should not use [ but [[
    – You should not use this as a valid test [ "$_ip" == "" ]
    but test the return value [[ $? -eq 0 ]]

  • Drown

    “permission denied” ?

  • Christian

    try chmod +x *scriptname*

  • Walter

    There is no need to use three programs if you can do it with one.

    _ip=$(host $d | grep 'has add' | head -1 | awk '{ print $4}')

    should read

    _ip=$(host $d | awk '/has add/ {x++; if (x=1) {print $NF; exit}}')
  • Deepak Sharma

    Hi I am using CentOS 5.6 (64 bit)
    I am getting nothing while running this script
    My output is —

    [root@svn ~]# ./521.sh cyberciti.biz http://www.google.com
    Getting information for domain: cyberciti.biz [ 75.126.153.206 ]…

    Getting information for domain: http://www.google.com [ 74.125.236.52 ]…

    [root@svn ~]

    Can you please help me on that

  • Z.Petrov

    Hi , i get the same as DeepakSharma , i was wondering does anyone know what this is about ? Im using Fedora 15 , 64bit .
    /e I tryed “whois” command but i dont have so i replaced it with “who” , maybe thats the reason? Any ideas in general ? :)

  • Indranil

    I tried using above script on CentOS 6 but the same is not working and giving error as

    ./searchdomain.sh google.co.in yahoo.co.in
    ./searchdomain.sh: line 22: host: command not found
    Error: google.co.in is not valid domain or dns error.
    ./searchdomain.sh: line 22: host: command not found
    Error: yahoo.co.in is not valid domain or dns error.
    Please advise

  • Stanimir Stoyanov

    The issue is because of the egrep command – currently its filtering the lines starting with OrgName:|City:|Country:|OriginAS:|NetRange:

    but .org .biz and some other TLDs use a bit different wording – try to change line:
    whois “$_ip” | egrep -w ‘OrgName:|City:|Country:|OriginAS:|NetRange:’

    with

    whois “$_ip” | egrep -w ‘OrgName:|City:|Country:|OriginAS:|NetRange:|inetnum|address|descr’

    at least that works good enough for me.

    Cheers,
    Stanimir

  • ww2

    You need to install host command.

  • ww2

    How about this one? This fixed it on my centos 5.8 box:

    whois -n $_ip | egrep -wi 'OrgName|City|Country|OriginAS|NetRange|Organization|NetName' | uniq -u
  • Arvind

    Good job, script works on MAC OSX/LION:

    Arvinds-MacBook-Pro:~ arvind$ arvindsMac/work/PDI-scripts/get-dns.sh 123
    Error: 123 is not valid domain or dns error.
    Arvinds-MacBook-Pro:~ arvind$
    Arvinds-MacBook-Pro:~ arvind$ arvindsMac/work/PDI-scripts/get-dns.sh google.com
    Getting information for domain: google.com [ 74.125.236.66 ]…
    NetRange: 74.125.0.0 – 74.125.255.255
    OriginAS:
    OrgName: Google Inc.
    City: Mountain View
    Country: US

    Arvinds-MacBook-Pro:~ arvind$
    Arvinds-MacBook-Pro:~ arvind$
    Arvinds-MacBook-Pro:~ arvind$ arvindsMac/work/PDI-scripts/get-dns.sh agoogle.com
    Getting information for domain: agoogle.com [ 216.65.41.185 ]…

    Arvinds-MacBook-Pro:~ arvind$
    Arvinds-MacBook-Pro:~ arvind$

Previous Script:

Next Script: