LINUX.ORG.RU

поиск ключевых слов по сайту


1

1

Я новичек в Линуксе, увлекся около 2-ух месяцев назад. И меня просто затянуло в эту систему. Очень жалею, что не начал ее изучать пару лет назад. Сейчас читаю форумы книги и сомтрю видеоуроки. Полученные знания за это время все перемешались в голове. Вроде и понимаешь как надо делать но не знаешь с какой стороны подступиться и как довести задачу (отточить) до конца. На днях возникла реальная задача: Есть нейкий сайт со ссылками на котором периодически появляются свежие новости например:
LXDE переносят на Qt, планируется совместимость с Wayland
www.linux.org.ru/news/linux-general/9330251 ....
требуется при появлении в тексте по очередной ссылке определенного слова, например фамилии «Иванов», отправить уведомление по электронной почте. если ссылка еще не существует
www.linux.org.ru/news/linux-general/9330252 - допустим эта ссылка не существует: подождать 5 минут, и, если ссылка появилась, то продложить поиск по ссылкам дальше www.linux.org.ru/news/linux-general/9330252
и т.д. Подскажите пожалуйста хоть на каком языке (bash, php, perl) это проще будет сделать? Спасибо.



Последнее исправление: oldvoffka (всего исправлений: 2)

допустим эта ссылка не существует: подождать 5 минут, и, если ссылка появилась

RSS

Подскажите пожалуйста хоть на каком языке (bash, php, perl) это проще будет сделать?

На том, который знаешь лучше. Библиотеки есть почти под всё.

i-rinat ★★★★★
()

У меня получается команда следующего вида:

if curl -s -S www.linux.org.ru/news/linux-general/9330250 | egrep -c -i -U "Иванов"; then echo Ivanov detected  | mail -s testSubject myemail@mydomain.com;  fi

Подскажите как можно сюда приделать цикл с сылками в конце которых число будет увеличиваться на еденицу. Спасибо

oldvoffka
() автор топика
Ответ на: комментарий от oldvoffka

посмотри на номера новостей в rss:

curl -s -S -L "http://www.linux.org.ru/section-rss.jsp?section=1" | grep "link.*[0-9]</link"

Подскажите как можно сюда приделать цикл с сылками в конце которых число будет увеличиваться на еденицу. Спасибо

вот так, только не делай так

#!/bin/bash

exit # это неправильный код!!!

num=$(cat lor.num)
while [ true ]; do
  url="www.linux.org.ru/news/linux-general/$num"
  response=$(curl --write-out %{http_code} --silent --output /dev/null "$url")
  if [ $response -eq 200 ] ; then
    sleep 1
    num=$((num+1))
    echo $num >lor.num
    echo $url >>lor.url
  else
    break
  fi
done

while read url; do
  if curl -s -S "$url" | egrep -c -i -U "Иванов"; then echo Ivanov detected  | mail -s testSubject myemail@mydomain.com;  fi
done < "lor.url"

anonymous
()
Ответ на: комментарий от oldvoffka
for (( id = твой_начальный_id; ; id++ )); do
    if curl -s -S www.linux.org.ru/news/linux-general/${id} | egrep -c -i -U "Иванов"; then echo Ivanov detected  | mail -s testSubject myemail@mydomain.com;  fi
done
anonymous
()
Ответ на: комментарий от anonymous

anonymous,

вот так, только не делай так

это что? шутка такая? Да Это же именно то, что мне нужно! anonymous, огромное тебе спасибо!

oldvoffka
() автор топика
Ответ на: комментарий от anonymous

anonymous, спасибо большое и за этот вариант, но тот, что выше мне подходит больше. если честно я так и не понял почему ты писал

exit # это неправильный код!!!

плз поясни.

oldvoffka
() автор топика
Ответ на: комментарий от anonymous

Да и еще, на сайте с которым будет работать этот код RSS нет.

oldvoffka
() автор топика
Ответ на: комментарий от oldvoffka

это неправильный код для сайта linux.org.ru. он вызовет «большую» нагрузку на сервер, да и других средств у сайта хватает. из-за этого там та строчка была написана и приведен код получения ссылок из rss ленты.

anonymous
()
Ответ на: комментарий от anonymous

по ссылкам из rss ленты видно, темы нумеруются с пропусками, а значит код работать не будет.

anonymous
()
Ответ на: комментарий от anonymous

anonymous, Спасибо. linux.org.ru это для примера. мониториться будет другой сайт. там как раз таки ссылки следуют по порядку. Еще раз спасибо за рабочий код. вручную я его уже проверил: все отлично. осталось разобраться с crontab-ом и запускать раз в полчаса.

oldvoffka
() автор топика
Ответ на: комментарий от oldvoffka

при запуске bash скрипта из cron скрипт не работает

очнеь долго мучился! при запуске в ручную - скрипт работает отлично, при запуске cron-ом - НЕ РАБОТАЕТ! проблема оказалсь в несоответствии кодировок искомых слов на русском языке («Иванов»). помог google. нужно создать файл /etc/environment со значением, в моем случае это- LANG=en_GB.UTF-8 и презапустить cron по умолчанию в cron POSIX, при перезапуске он считывает пременные из /etc/environment

oldvoffka
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.