Shell скрипт для получения whois информации о домене

Linux
Тестировалось на Ubuntu 10.04. Доставляем пакет whois, если его нет.
apt-get install whois

Создаем скрипт
_dom=$@

# Die if no domains are given
[ $# -eq 0 ] && { echo "Usage: $0 domain1.com domain2.com ..."; exit 1; }
for d in $_dom
do
        _ip=$(host $d | grep 'has add' | head -1 | awk '{ print $4}')
        [ "$_ip" == "" ] && { echo "Error: $d is not valid domain or dns error."; continue; }
        echo "Getting information for domain: $d [ $_ip ]..."
        whois "$_ip" | egrep -w 'OrgName:|City:|Country:|OriginAS:|NetRange:'
        echo ""
done

Запускать так:
./whois.sh google.com

Результат:
root@localhost:~# ./whois.sh google.com
Getting information for domain: google.com [ 173.194.65.102 ]…
NetRange: 173.194.0.0 — 173.194.255.255
OriginAS: AS15169
OrgName: Google Inc.
City: Mountain View
Country: US

3 комментария

avatar
Для BASH проверку нулевого количества переданных параметров лучше делать так:

(( $# )) || { doSomething; exit 1; }

Переменная _dom здесь не сильно нужна, можно просто
for d; do
Ведь если не указать список в in, то в качестве списка будут использованы параметры командной строки (то есть for d; do идентично for d in $@; do)

echo «Error: $d is not valid domain or dns error.»

Такого рода сообщения нужно отправлять в &2 (STDERR), тем более, что скрипт у вас выводит результаты работы в STDOUT.
avatar
Извиняюсь, забываю о том, что здесь не BB-код code, а тэг.
avatar
поправил теги
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.