Страница 1 из 1
Подскажите по элементаному скрипту sh
Добавлено: 2013-05-30 11:00:38
Sabrewulf
Необходимо написать скрипт, который преобразовывает доменные имена в ип адреса. У меня получилось так:
Код: Выделить всё
#!/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 нормально отрабатывает.
Re: Подскажите по элементаному скрипту sh
Добавлено: 2013-05-30 11:34:39
Гость
Re: Подскажите по элементаному скрипту sh
Добавлено: 2013-05-30 11:37:30
Sabrewulf
Тоже самое.
Выяснил, что гадит символ "+" - как его экранировать?
Re: Подскажите по элементаному скрипту sh
Добавлено: 2013-05-30 12:40:38
Charlz_Klug_
У меня работает:
Код: Выделить всё
[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]~>$
Re: Подскажите по элементаному скрипту sh
Добавлено: 2013-05-30 13:14:01
rayder
странно, у меня нормально отрабатывает. попробуй 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
Re: Подскажите по элементаному скрипту sh
Добавлено: 2013-05-30 13:25:34
Sabrewulf
Charlz_Klug_ писал(а):У меня работает:
Код: Выделить всё
[Charlz_Klug@Meleena]~>$ cat sample.sh
dig +short ya.ru > ip.txt
не работает в конструкции do...done, вне её работает
rayder писал(а):странно, у меня нормально отрабатывает. попробуй dig '+short' $i
не помогло
Re: Подскажите по элементаному скрипту sh
Добавлено: 2013-05-30 17:30:14
Charlz_Klug_
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:~$
Всё арбайтен как надо. Под Линуксом правда. Но более чем уверен что и под фряхой будет работать.
Re: Подскажите по элементаному скрипту sh
Добавлено: 2013-05-30 17:43:08
FreeBSP
Код: Выделить всё
[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]~/#
Re: Подскажите по элементаному скрипту sh
Добавлено: 2013-05-31 8:52:12
Sabrewulf
Спасибо, что обозвали ослом. Рад, что у вас на линуксе скрипт работает.
не работает
Charlz_Klug_ писал(а):Всё арбайтен как надо. Под Линуксом правда. Но более чем уверен что и под фряхой будет работать.
Спасибо, обнадёживает!

Re: Подскажите по элементаному скрипту sh
Добавлено: 2013-05-31 17:32:26
Charlz_Klug_
Sabrewulf писал(а):Charlz_Klug_ писал(а):Всё арбайтен как надо. Под Линуксом правда. Но более чем уверен что и под фряхой будет работать.
Спасибо, обнадёживает!

Проверил под фряхой - работает. Если у вас до сих пор не заработало, то попробуйте так: Делаете пандорический захват, лифтите в монаду, потом строите рекурсивную схему (здесь подойдёт зигохистоморфный препроморфизм) как монадический трансформер из категории эндофункторов, и метациклически вычисляете результат. Любой второкурсник справится. А если делать на анафорических лямбдах — так задачка вообще на пять минут. Удачи!
Re: Подскажите по элементаному скрипту sh
Добавлено: 2013-05-31 17:45:57
rayder
Sabrewulf писал(а):Спасибо, что обозвали ослом.
Вас никто ослом не называл. Но самокритика это всегда хорошо.
У меня на 9.0 работает, на 8.2 (как показали выше) тоже работает. Можете подождать пока вам покажут что и на 9.1 тоже работает.
Re: Подскажите по элементаному скрипту sh
Добавлено: 2013-05-31 19:55:11
rayder
так и быть, проверил сам
Код: Выделить всё
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 #
что вы там у себя поломали мы знать не можем.
Re: Подскажите по элементаному скрипту sh
Добавлено: 2013-06-05 12:59:10
Sabrewulf
Проверил на других серверах - работает. Начал копать, и в итоге разобрался в чём проблема.
Если в domain.txt перевод строки Unix-like (0A), то всё работает, если Windows-like (0D 0A), то работает только полный вариант dig. dig +short не работает! Как прикрутить к первому посту автозамену 0D 0A -> 0A?
Re: Подскажите по элементаному скрипту sh
Добавлено: 2013-06-05 13:41:55
rmn
Re: Подскажите по элементаному скрипту sh
Добавлено: 2013-06-07 15:48:21
Sabrewulf
rmn
Спасибо, надо запомнить такую простую и элегантную команду.
Оказалось, что с не "неправильным" переводом строки dig просто вылетал, сгенерировав соответствующий ему core файл аж в папке /etc
Re: Подскажите по элементаному скрипту sh
Добавлено: 2013-06-08 12:49:24
Electronik
Charlz_Klug_ писал(а):
Если у вас до сих пор не заработало, то попробуйте так: Делаете пандорический захват, лифтите в монаду, потом строите рекурсивную схему (здесь подойдёт зигохистоморфный препроморфизм) как монадический трансформер из категории эндофункторов, и метациклически вычисляете результат. Любой второкурсник справится. А если делать на анафорических лямбдах — так задачка вообще на пять минут. Удачи!
+100500