view mobile version net4me Enable JavaScript in your browser! Linux education center net4me.
 
net4me logo

tux

linux commands
shell script
protocol
ip, tcp, smtp, ntp, ftp
telnet terminal
java and javascript
ajax web technology
documentation
howto, man, info
cisco in network
linux server
linux in home
online utility
and more more more.
python development
туе4ьу дштгч

  Содержание подраздела:
Определение имен хостов по диапазону адресов
#!/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

home back top
При копировании материалов нашего портала, сылка на net4me обязательна.
Рейтинг@Mail.ru   Valid HTML 4.01 Transitional     Яндекс цитирования   best billing

 



...

net4me snowflake
rfc2368
 
net4me portal This page last modified: Saturday, October 1, 2011   be in net. net4me

portal net4me linux education center