Пару вопросов по CURL, скрипт.

sleepnow
На сайте с 11.04.2009
Offline
129
1001

Решил наладить шлюзик небольшой (sms по запросу, смс нотификации.. ) шлюз готов.

Теперь пишу дежурный скрипт.

Друзья, подскажите.. как в рамках bash или curl отгружать построчно адреса ?

Скажем есть запрос

curl -d "domain.ru" -i адрес обработчика | grep чего-то там| sed -e 's/<br \/>//g'

А как -d "domain.ru" заставить читать из файла domains.txt построчно? Так же вывод там мусорный, как sed'ом обрезать все ПЕРЕД определенным словом

Ну и самое интересное, что если вывод имеет определенное слово, или зависимость слов - то выполнять echo mail или echo "капец наступил" | sendsms +телефон ( смс шлюз настроен ). При этом, что если один раз оповестил, то дважды echo (mail,sms ) выполнять не будет )

Спасибо!

M
На сайте с 24.10.2011
Offline
173
#1

while read line

do

curl -d ${line} ...

done < file

sleepnow
На сайте с 11.04.2009
Offline
129
#2

Спасибо. получилась вот такая красота

#!/bin/bash
URL='адрес
while read line
do
curl -d "domains=$line" -i $URL | sed -e :a -e 's/<[^>]*>//g;/</N;//ba' | sed '1,16d' | sed 's/^[ \t]*//' | awk -v ORS=' ' '{print}'
done < "domain.data"

Скажите пожалуйста, а как сделать так.. что в построчном результате, что выводит curl .. если есть keyword , то скажем echo mail делать? И делать 1 раз, то есть в след. раз уже не ругаться на эту же строчку. ( уведомление типа было .. и бог с ним )

M
На сайте с 24.10.2011
Offline
173
#3

sleepnow, писать домен в файл2, потом проверять, есть ли уже домен в файле и отправлять сообщение только если его там нет

sleepnow
На сайте с 11.04.2009
Offline
129
#4

michaek

Но это же по сути в рамках cat filename получается.

Почему нельзя сделать в рамках вывода curl и как-то чем-то типа grep? Прошу прощения, может быть не прав. Знания bash есть, но лучше советоваться ☝

---------- Post added 08-04-2013 at 02:10 ----------

if grep -q "$1" $file
then
echo "YES, found."
else
echo "bro, no :("
fi
rm file1

как-то так получилось. Спасибо за подсказку :) ./script.sh keyword.

---------- Post added 08-04-2013 at 02:27 ----------

А как вывод

domain.ru -

result domain.ru

domain1.ru -

result domain1.ru

domain2.ru -

result domain2.ru

"Выпрямить" в вид:

domain.ru - result domain.ru

domain1.ru - result domain1.ru

domain2.ru - result domain2.ru

awk -v ORS=' ' '{print}'

Выводит все в строчку (

upd: sed ':a; /$/N; s/\n//; ta'

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий