Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Голосование

Пригодился ли Вам скрипт?

ДА, спасибо!
НЕТ, не интересует.

Автор Тема: ПОИСК нужного текста в скачаной страничке [РЕШЕНО]  (Прочитано 2590 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Продолжая начатую тему здесь - https://forum.ubuntu.ru/index.php?topic=97625.75    , хотелось бы модифицировать скрипт для чуть другой задачи. ;)

Задача: Чтобы по расписанию (из крона) скачивалась WGET заданая в скрипте страничка , содержимое которой должно проверяться на наличие нужного текста, и после проверки удалять ту страничку. После чего переходить к следующей CASE заданой странице, и так пока не перепроверятся все страницы указаные в CASE.
Условие: Когда в коде страничке находится указаный текст - отправляется смс и мейл (этот принцип в скрипте СМС-оповещения уже сделан) про то, что найден искомый текст, после чего страничку так же удалять. И переход к скачиванию следующей.

Вроде бы как просто, но со слабыми навыками программирования не очень получается все сбить в кучу. Подскажите пожалуйста. :idiot2:
« Последнее редактирование: 29 Января 2011, 06:18:19 от TrEK »

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: ПОИСК нужного текста в скачаной страничке
« Ответ #1 : 27 Января 2011, 01:33:36 »
Вы хотя бы часть кода выложили. Не с нуля же вам писать.
А так, качаем через wget, затем через grep ищем, отправка вы говорите готова, что еще?
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: ПОИСК нужного текста в скачаной страничке
« Ответ #2 : 27 Января 2011, 01:34:25 »
Виват... это ж можно grep заюзать! Спасибо добрый человек :))
Щас попробую.

Пользователь решил продолжить мысль 27 Января 2011, 02:23:14:
Вы хотя бы часть кода выложили. Не с нуля же вам писать.
А так, качаем через wget, затем через grep ищем, отправка вы говорите готова, что еще?

Поправте если что:

#!/bin/bash
for i in
www.index1.html
www.index2.html
www.index3.html
do #количество шагов цикла скрипта
case $i in
www.index1.html ) name="index1";;
www.index2.html ) name="index2";;
www.index3.html ) name="index3";;
esac
 word="HELLO WORLD"
 mail_to="mail@mail.ru"
if eval "wget $i"; then
if [ -e `cat "$i" | grep $word` ]; then
echo "Word $word has been fined in $i" | mail -s 'FINED '$word'' $mail_to
rm $i
else
echo "NOT FOUND!";
rm $i
fi
fi
done

Как правильно задать проверку наличия HELLO WORLD в cat index1.html | grep HELLO WORLD ?
« Последнее редактирование: 27 Января 2011, 02:23:14 от TrEK »

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: ПОИСК нужного текста в скачаной страничке
« Ответ #3 : 27 Января 2011, 02:25:51 »
#!/bin/bash
echo "hello world" > text
temp=`cat text  | grep hello`
if [ -z "$temp" ];
then
echo "нету"
else
echo "есть"
fi
« Последнее редактирование: 27 Января 2011, 02:31:40 от RazrFalcon »
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: ПОИСК нужного текста в скачаной страничке
« Ответ #4 : 27 Января 2011, 02:31:53 »
если не пуста
if [ -z $text ]



#!/bin/bash
for i in
www.index1.html
www.index2.html
www.index3.html
do #количество шагов цикла скрипта
case $i in
www.index1.html ) name="index1";;
www.index2.html ) name="index2";;
www.index3.html ) name="index3";;
esac
 word="HELLO WORLD"
 mail_to="mail@mail.ru"
 text=`cat $i | grep $word`
if eval "wget $i"; then
if [ -z $text ]; then
echo "Word $word has been fined in $i" | mail -s 'FINED '$word'' $mail_to
rm $i
else
echo "NOT FOUND!";
rm $i
fi
fi
done

Так?
п.с. в этом коде второе else не обязательно? (для условия if eval "wget $i"; then)

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: ПОИСК нужного текста в скачаной страничке
« Ответ #5 : 27 Января 2011, 02:37:54 »
не то, но что бы не переписывать смените
if [ -z $text ]
на
if [ -n $text ]
Тобиш, если не пуст значит посылаем мэил.
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: ПОИСК нужного текста в скачаной страничке
« Ответ #6 : 27 Января 2011, 03:02:05 »
Есть, работает.. :) Ура )

Но вот у меня грабли...надо делать так:

for i in www.index1.html www.index2.html www.index3.html


а как написать чтоб рабтал скрипт при :

for i in
www.index1.html
www.index2.html
www.index3.html


Пользователь решил продолжить мысль 27 Января 2011, 03:13:02:



И что-то не получается у меня  чтобы в echo "Word $word has been fined in $i" | mail -s 'FINED '$word'' $mail_to
$word - выделялось красным цветом . ШТМЛовские теги я так понимаю тут не пройдуТ?
« Последнее редактирование: 27 Января 2011, 03:13:02 от TrEK »

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: ПОИСК нужного текста в скачаной страничке
« Ответ #7 : 27 Января 2011, 03:27:58 »
for i in
www.index1.html
www.index2.html
www.index3.html

IFS=$'\t\n'
как то так
в конце unset IFS
не уверен тут

И что-то не получается у меня  чтобы в echo "Word $word has been fined in $i" | mail -s 'FINED '$word'' $mail_to
$word - выделялось красным цветом . ШТМЛовские теги я так понимаю тут не пройдуТ?
Вам надо послать текст красным, что бы в мейле было красным слово выделено? Тут я точно не в курсе.
« Последнее редактирование: 27 Января 2011, 03:29:35 от RazrFalcon »
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: ПОИСК нужного текста в скачаной страничке
« Ответ #8 : 27 Января 2011, 03:32:35 »
for i in
www.index1.html
www.index2.html
www.index3.html

IFS=$'\t\n'
как то так
в конце unset IFS
не уверен тут

И что-то не получается у меня  чтобы в echo "Word $word has been fined in $i" | mail -s 'FINED '$word'' $mail_to
$word - выделялось красным цветом . ШТМЛовские теги я так понимаю тут не пройдуТ?
Вам надо послать текст красным, что бы в мейле было красным слово выделено? Тут я точно не в курсе.


а куда IFS=$'\t\n' и unset IFS именно надо вставить?

Да , чтоб во входящем письме слово было выделено красным.

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: ПОИСК нужного текста в скачаной страничке
« Ответ #9 : 27 Января 2011, 03:48:47 »
В самом начале, после #!/bin/bash и в конце.

Не знаю как красным сделать.
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: ПОИСК нужного текста в скачаной страничке
« Ответ #10 : 27 Января 2011, 03:52:56 »
IFS=$'\t\n' после #!/bin/bash
unset IFS после done

и матерится , если

for i in
www.index1.html
www.index2.html
www.index3.html


Пользователь решил продолжить мысль 27 Января 2011, 03:58:45:




Я что-то не там прописал видимо, так как мне приходит сообщение что в трех страничках есть искомое слово, хотя оно присутствует только в первых двух.

#!/bin/bash
#IFS=$'\t\n'
for i in index1.html index2.html index3.html
do #количество шагов цикла скрипта
case $i in
index1.html ) name="index1";;
index2.html ) name="index2";;
index3.html ) name="index3";;
esac
 site="http://www.site.com/"
 word="HELLO_WORLD"
 mail_to="mail@mail.ru"
 text=`cat $i | grep $word`
if eval "wget $site$i"; then
if [ -n $text ]; then
echo "                  ";
echo " ================ ";
echo "                  ";
echo "FOUND $word in $name";
echo "          visit $site$i        ";
echo "                  ";
echo " ===============  ";
echo "Word $word has been fined in <$name> , visit $site$i" | mail -s 'FINED '$word' IN '$name'' $mail_to
rm $i
echo "======";
echo "  FILE WAS DELETED!!!!!!!!!!!";
fi
else
if [ ! -n $text ]; then
echo "NOT FOUND $word in $name!";
echo "Word $word not found in $site$i" | mail -s 'not found '$word'' $mail_to
rm $i
echo "=========";
echo "FILE WAS DELETED";
fi
fi
sleep 3
done
#unset IFS
« Последнее редактирование: 27 Января 2011, 03:59:20 от TrEK »

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: ПОИСК нужного текста в скачаной страничк&
« Ответ #12 : 27 Января 2011, 10:49:25 »
и матерится , если

for i in
www.index1.html
www.index2.html
www.index3.html

for i in \
www.index1.html \
www.index2.html \
www.index3.html

или в одну строку.

А как нибудь, чтоб "\" автоматически дописывалась вконце каждой строки? Просто странички надо будет добавлять и менять, хотелось бы ен обращять внимание на то, есть ли там вконце \

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: ПОИСК нужного текста в скачаной страничке
« Ответ #13 : 27 Января 2011, 10:56:30 »
temp="www.index1.html
"
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: ПОИСК нужного текста в скачаной страничке
« Ответ #14 : 27 Января 2011, 11:03:23 »
temp="www.index1.html
"
Если поменять for i in index1.html index2.html index3.html на :

for i in temp="index1.html
index2.html
index3.html
"

тогда цикл проверки пытается скачать index1.html index2.html  index3.html как единое целое.... ((((

 

Страница сгенерирована за 0.035 секунд. Запросов: 24.