net4me. net for me. net 4 mewww.Net4me.runet4me. net for me. net 4 me  
   
 
Рейтинг@Mail.ru
Rambler's Top100
Valid HTML 4.01 Transitional

net4me linux network and web technology


  Содержание подраздела:

Определение имен хостов по диапазону адресов
#!/bin/bash

####################################################################
#  Скрипт определения имен хостов по заданому диапазону адресов    #
#                                                                  #
# Внимание!                                                        #
# Получать и использовать официальную  информацию от DNS серверов  #
# НЕ противозаконно.                                               #
# (На то они и нужны, чтобы эту информацию предоставлять.)         #
# Скрипт писался для сети nln.ru Ben-Ja©2004                       #
# Распространяется абсолютно свободно. Т.е. даром. =)              #
#   Автор не несет какой либо ответственности за использование     #
#      и ущерб, нанесенный данным программным обеспечением.        #
####################################################################

# Важно!!! Это модернизированый вариант, который не только берет имя по IP адресу,
# но еще и запускает arping. Для его работы у вас должен быть установлена утилита arping,
# входящая в пакет iputils и настроена система sudo (sudoers).
#


# Для вывода данных в файл достаточно перенаправить поток в файл
# Например: ./names.sh 192.168.140 > res.txt
# А чтобы при записи в файл еще и видеть что пишется, просто "tail -f res.txt" в сосетнем терминале =)

# Узнаем у DNS сервера имена всех хостов в данной подсети.
if [ -z "$1" ]; then
    echo используйте: $0 192.168.140 т.е. Укажите нужную подсеть.
    exit
fi
# Если сетка задана - действуем
clear
sta=1                   # Начальный адрес  [диапазон можно изменять]
sto=254                 # Конечный адрес. (255 уже броадкаст.)
                        # $1 - введенная подсеть.
echo "############  Поехали! Сеть: $1  ############################"
# Начинаем перебор от 1 до 254
for i in `seq $sta $sto`;
do
        # формируем IP'шник
        zapr=$1.$i
        printf "$zapr ***\t"
        # Обращаемся к серверу и очищаем результат. (если не определен - не выводим ничего.)
# Здесь: host $zapr - сам запрос.
# gawk --re-interval '{ print$5 }' - разделяет полученную строку на кусочки
# по пробелам и выдергивает пятый кусочек.
# grep -v NXDOMAIN - выводит всё, кроме того, где встречается NXDOMAIN
# (Он встречается при ненахождении имени хоста
# пример: Host 2.147.168.192.in-addr.arpa not found: 3(NXDOMAIN))
# Раскомментируйте следующие строки для использования ARP запросов.
#        host $zapr| gawk --re-interval '{ print$5 }' | grep -v NXDOMAIN && sudo arping -c1 $zapr 2> /dev/null |\
#grep ms | gawk --re-interval '{ print$5 }'
#        printf "\n"
# Для использования без arping'а для определения МАС адреса работающих хостов
# (естественно, действует в одной подсети т.е. не дальше ближайшего шлюза.)
# закомментируйте строчки находящиеся выше и раскомментируйте нижеследующие строки.
        host $zapr| gawk --re-interval '{ print$5 }' | grep -v NXDOMAIN
        printf "\n"



sleep 0.7s # а теперь ждем, чтобы не сочли наши поиски атакой на DNS сервер =)
done
echo "############  Приехали... ############################################"
exit 0


Более полную информацию по этой теме можно получить на новом сайте net4me.net