Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок
Модераторы: vadim64, terminus
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
Sabrewulf
- рядовой
- Сообщения: 13
- Зарегистрирован: 2013-03-29 10:19:06
Непрочитанное сообщение
Sabrewulf » 2013-05-30 11:00:38
Необходимо написать скрипт, который преобразовывает доменные имена в ип адреса. У меня получилось так:
Код: Выделить всё
#!/bin/sh
for i in $(cat domain.txt)
do
dig +short $i
# echo 1 $i
done > ip.txt
Дальше я его, конечно, усовершенствую различными фильтрами, но теперь споткнулся на одной вещи и не могу понять в чём проблема. dig +short $i ничего не выводит. Если расскомментировать echo, мы видим что всё читается, и корректно выводится список доменных имён. Почему dig остаётся немым? Из консоли dig +short ya.ru нормально отрабатывает.
Sabrewulf
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
Charlz_Klug_
- проходил мимо
Непрочитанное сообщение
Charlz_Klug_ » 2013-05-30 12:40:38
У меня работает:
Код: Выделить всё
[Charlz_Klug@Meleena]~>$ cat sample.sh
dig +short ya.ru > ip.txt
[Charlz_Klug@Meleena]~>$ sh sample.sh
[Charlz_Klug@Meleena]~>$ cat ip.txt
213.180.193.3
213.180.204.3
77.88.21.3
87.250.250.3
87.250.250.203
87.250.251.3
93.158.134.3
93.158.134.203
[Charlz_Klug@Meleena]~>$
Charlz_Klug_
-
rayder
- лейтенант
- Сообщения: 661
- Зарегистрирован: 2008-12-18 16:29:43
- Откуда: Ukraine/Kiev
-
Контактная информация:
Непрочитанное сообщение
rayder » 2013-05-30 13:14:01
странно, у меня нормально отрабатывает. попробуй dig '+short' $i
либо как-то так:
Код: Выделить всё
#!/bin/sh
in=${1}
out=${2}
_cat="/bin/cat"
_dig="/usr/bin/dig"
for domain in `${_cat} ${in}`
do
ip=`${_dig} +short ${domain}`
if [ "x${out}" == "x" ];
then
echo -e "${domain}\t$ip";
else
echo -e "${domain}\t$ip" >> ${out}
fi
done
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.
rayder
-
Sabrewulf
- рядовой
- Сообщения: 13
- Зарегистрирован: 2013-03-29 10:19:06
Непрочитанное сообщение
Sabrewulf » 2013-05-30 13:25:34
Charlz_Klug_ писал(а):У меня работает:
Код: Выделить всё
[Charlz_Klug@Meleena]~>$ cat sample.sh
dig +short ya.ru > ip.txt
не работает в конструкции do...done, вне её работает
rayder писал(а):странно, у меня нормально отрабатывает. попробуй dig '+short' $i
не помогло
Sabrewulf
-
Charlz_Klug_
- проходил мимо
Непрочитанное сообщение
Charlz_Klug_ » 2013-05-30 17:30:14
Sabrewulf писал(а):Charlz_Klug_ писал(а):У меня работает:
Код: Выделить всё
[Charlz_Klug@Meleena]~>$ cat sample.sh
dig +short ya.ru > ip.txt
не работает в конструкции do...done, вне её работает
Код: Выделить всё
imil@Azadbash:~$ cat sample.sh
for i in $(cat domain.txt)
do
dig +short $i >> ip.txt
done
imil@Azadbash:~$ cat domain.txt
ya.ru
mail.ru
imil@Azadbash:~$ sh sample.sh
imil@Azadbash:~$ tail ip.txt
87.250.250.203
87.250.251.3
93.158.134.3
93.158.134.203
213.180.193.3
213.180.204.3
94.100.180.201
217.69.139.199
217.69.139.201
94.100.180.199
imil@Azadbash:~$
Всё арбайтен как надо. Под Линуксом правда. Но более чем уверен что и под фряхой будет работать.
Charlz_Klug_
-
FreeBSP
- майор
- Сообщения: 2020
- Зарегистрирован: 2009-05-24 20:20:19
- Откуда: Москва
Непрочитанное сообщение
FreeBSP » 2013-05-30 17:43:08
Код: Выделить всё
[18:40]~/# uname -mrs
FreeBSD 8.2-STABLE amd64
[18:41]~/# cat do
domain.txt domains.log
[18:41]~/# cat domain.txt
ya.ru
mail.ru
www.ru
[18:41]~/# cat test.sh
#!/bin/sh
for i in $(cat domain.txt)
do
dig +short $i
# echo 1 $i
done > ip.txt
[18:42]~/# sh ~/test.sh
[18:42]~/# cat ip.txt
77.88.21.3
87.250.250.3
87.250.250.203
87.250.251.3
93.158.134.3
93.158.134.203
213.180.193.3
213.180.204.3
217.69.139.201
94.100.180.199
94.100.180.201
217.69.139.199
194.87.0.50
[18:42]~/#
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
FreeBSP
-
Sabrewulf
- рядовой
- Сообщения: 13
- Зарегистрирован: 2013-03-29 10:19:06
Непрочитанное сообщение
Sabrewulf » 2013-05-31 8:52:12
Спасибо, что обозвали ослом. Рад, что у вас на линуксе скрипт работает.
не работает
Charlz_Klug_ писал(а):Всё арбайтен как надо. Под Линуксом правда. Но более чем уверен что и под фряхой будет работать.
Спасибо, обнадёживает!
Sabrewulf
-
Charlz_Klug_
- проходил мимо
Непрочитанное сообщение
Charlz_Klug_ » 2013-05-31 17:32:26
Sabrewulf писал(а):Charlz_Klug_ писал(а):Всё арбайтен как надо. Под Линуксом правда. Но более чем уверен что и под фряхой будет работать.
Спасибо, обнадёживает!
Проверил под фряхой - работает. Если у вас до сих пор не заработало, то попробуйте так: Делаете пандорический захват, лифтите в монаду, потом строите рекурсивную схему (здесь подойдёт зигохистоморфный препроморфизм) как монадический трансформер из категории эндофункторов, и метациклически вычисляете результат. Любой второкурсник справится. А если делать на анафорических лямбдах — так задачка вообще на пять минут. Удачи!
Charlz_Klug_
-
rayder
- лейтенант
- Сообщения: 661
- Зарегистрирован: 2008-12-18 16:29:43
- Откуда: Ukraine/Kiev
-
Контактная информация:
Непрочитанное сообщение
rayder » 2013-05-31 17:45:57
Sabrewulf писал(а):Спасибо, что обозвали ослом.
Вас никто ослом не называл. Но самокритика это всегда хорошо.
У меня на 9.0 работает, на 8.2 (как показали выше) тоже работает. Можете подождать пока вам покажут что и на 9.1 тоже работает.
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.
rayder
-
rayder
- лейтенант
- Сообщения: 661
- Зарегистрирован: 2008-12-18 16:29:43
- Откуда: Ukraine/Kiev
-
Контактная информация:
Непрочитанное сообщение
rayder » 2013-05-31 19:55:11
так и быть, проверил сам
Код: Выделить всё
root@free91:/root # cat domain.txt
ya.ru
i.ua
gmail.com
root@free91:/root # cat dig.sh
#!/bin/sh
for i in $(cat domain.txt)
do
dig +short $i
# echo 1 $i
done > ip.txt
root@free91:/root # sh dig.sh
root@free91:/root # cat ip.txt
213.180.204.3
77.88.21.3
87.250.250.3
87.250.250.203
87.250.251.3
93.158.134.3
93.158.134.203
213.180.193.3
91.198.36.14
173.194.112.182
173.194.112.181
root@free91:/root # uname -a
FreeBSD free91 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r243826: Tue Dec 4 06:55:39 UTC 2012 root@obrian.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386
root@free91:/root #
что вы там у себя поломали мы знать не можем.
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.
rayder
-
Sabrewulf
- рядовой
- Сообщения: 13
- Зарегистрирован: 2013-03-29 10:19:06
Непрочитанное сообщение
Sabrewulf » 2013-06-05 12:59:10
Проверил на других серверах - работает. Начал копать, и в итоге разобрался в чём проблема.
Если в domain.txt перевод строки Unix-like (0A), то всё работает, если Windows-like (0D 0A), то работает только полный вариант dig. dig +short не работает! Как прикрутить к первому посту автозамену 0D 0A -> 0A?
Sabrewulf
-
rmn
- старшина
- Сообщения: 427
- Зарегистрирован: 2008-10-03 18:52:02
rmn
-
Sabrewulf
- рядовой
- Сообщения: 13
- Зарегистрирован: 2013-03-29 10:19:06
Непрочитанное сообщение
Sabrewulf » 2013-06-07 15:48:21
rmn
Спасибо, надо запомнить такую простую и элегантную команду.
Оказалось, что с не "неправильным" переводом строки dig просто вылетал, сгенерировав соответствующий ему core файл аж в папке /etc
Sabrewulf
-
Electronik
- капитан
- Сообщения: 1593
- Зарегистрирован: 2008-11-15 17:32:56
- Откуда: Минск
-
Контактная информация:
Непрочитанное сообщение
Electronik » 2013-06-08 12:49:24
Charlz_Klug_ писал(а):
Если у вас до сих пор не заработало, то попробуйте так: Делаете пандорический захват, лифтите в монаду, потом строите рекурсивную схему (здесь подойдёт зигохистоморфный препроморфизм) как монадический трансформер из категории эндофункторов, и метациклически вычисляете результат. Любой второкурсник справится. А если делать на анафорических лямбдах — так задачка вообще на пять минут. Удачи!
+100500
Предскажем будущее hw по логам и дампу, снимем сглаз и порчу с рута, поможем придумать пароль(С)
Блог
Electronik