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) это проще будет сделать? Спасибо.

допустим эта ссылка не существует: подождать 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 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.