получить из списка доменных имен > IP адреса

Софт под Linux, разные программы, но только связанные с Linux

Модератор: /dev/random

Аватара пользователя
SANyaSmolenskii
Сообщения: 40
ОС: Mandriva2010.0 free

получить из списка доменных имен > IP адреса

Сообщение SANyaSmolenskii »

Есть ли программа, которая может сделать собственно сабж?

Можно , конечно, использовать ping, но в списке 2000 строк :(
Спасибо сказали:
dva20
Сообщения: 93
ОС: Debian Lenny

Re: получить из списка доменных имен > IP адреса

Сообщение dva20 »

Можно написать скриптик, например на bash, использовав утилиты host или nslookup, можно поюзать еще и dig
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: получить из списка доменных имен > IP адреса

Сообщение allez »

Добавлю, что использование host предпочтительнее ping по той причине, что некоторые серверы имеют по несколько IP-адресов. Ping покажет вам только один из них, а вот host - все.

Вот что host говорит прo mail.ru

$ host mail.ru | grep "address" mail.ru has address 194.67.57.26 mail.ru has address 194.67.57.126 mail.ru has address 194.67.57.226
Спасибо сказали:
dva20
Сообщения: 93
ОС: Debian Lenny

Re: получить из списка доменных имен > IP адреса

Сообщение dva20 »

Ну вот типа скриптик

Код: Выделить всё

#!/bin/bash

    for i in $1; do
        host $i|grep address
    done


Скопировать код, например, в файл showip, затем на вход скрипта подать через пробелы список хостов, например так: sh /ПУТЬ_К_СКРИПТУ/showip linuxforum.ru linux.org.ru
или подать на вход скрипту список из файла, а на выход в другой файл, например:

cat /home/user/list_name | xargs /home/user/showip > list_ip.

"Красивости" предлагаю самому реализовать в скрипте.

P.S. Спасибо serzh-z, обнаружил ошибочку у себя, подправил :)
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: получить из списка доменных имен > IP адреса

Сообщение serzh-z »

SANyaSmolenskii, cat hosts.txt | xargs netselect
Спасибо сказали:
Аватара пользователя
SANyaSmolenskii
Сообщения: 40
ОС: Mandriva2010.0 free

Re: получить из списка доменных имен > IP адреса

Сообщение SANyaSmolenskii »

to serzh-z

Что должен вообще выводить netselect?
У меня так:

Код:

[san@localhost slon]$ netselect ya.ru 36 ya.ru


to dva20

Спасибо! :drinks:
Скрипт работает. Перелопатил мне файл 800 000 строк, и все в лучшем виде вывел в файл.
Спасибо сказали:
Аватара пользователя
SANyaSmolenskii
Сообщения: 40
ОС: Mandriva2010.0 free

Re: получить из списка доменных имен > IP адреса

Сообщение SANyaSmolenskii »

Похоже, рано обрадовался.
Такое ощущение, что надо добавить задержку в вывод cat. А как это сделать, не знаю. Кажется, то , что передает cat, не успевает обрабатывать host. Я немножко изменил скрипт

Код:

#!/bin/bash for i in $1; do echo "*"; echo $i; host $i|grep address; done


Запускаю так cat domains |xargs ./showip > ip
В выводе (ip) видно, что пропускается много доменов.
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: получить из списка доменных имен > IP адреса

Сообщение allez »

Похоже, что ваш скрипт пытается "скормить" команде host несколько имен за раз. А host умеет работать только с одним аргументом. Попробуйте организовать построчное считывание своего файла. Примерно так:

Код: Выделить всё

#!/bin/bash

cat $1 | while read DOMAIN;
do
  echo "*"
  echo $DOMAIN
  host $DOMAIN | grep "address" | awk '{print $NF}'
done

Запуск: ./showip domains

P. S. Построчное чтение файла в цикле можно оформить еще одним способом:

Код: Выделить всё

#!/bin/bash

while read DOMAIN;
do
  echo "*"
  echo $DOMAIN
  host $DOMAIN | grep "address" | awk '{print $NF}'
done < $1

Запуск скрипта при этом не меняется: ./showip domains

P. P. S. Если на выходе скрипта должны быть не только "голые" IP-адреса, уберите конвейер с awk.
Спасибо сказали:
Аватара пользователя
SANyaSmolenskii
Сообщения: 40
ОС: Mandriva2010.0 free

Re: получить из списка доменных имен > IP адреса

Сообщение SANyaSmolenskii »

to allez

Использовал ваш скрипт, только переделал совсем немножко:

Код: Выделить всё

#!/bin/bash
date
while read DOMAIN;
do
  host $DOMAIN | grep "address" | awk '{print $NF}'
done < $1
date


Работает! Запустил его перерабатывать свой файл с 800 000 строчек. Надеюсь, не забанят на DNS-сервере. :rolleyes:

Всем ОГРОМНОЕ СПАСИБО за помощь. Тему можно закрыть.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: получить из списка доменных имен > IP адреса

Сообщение sash-kan »

не с подобной ли задачей столкнулся топик-стартер?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали: