автоматизация в учебе

Толпы студентов у доски с расписанием — у кого то это вызывает приступы ностальгии, у меня отвращение. Почти у каждого института есть свои сайт, где можно скачать расписание, посмотреть полезную информация. У некоторых это сделано хорошо, у некоторых плохо.
Мой институт имеет 2 сайта один так себе, другой ужасный 🙁 Главный immf.ru много полезной информации, в удобном виде, но часть информации закрыта — просят получить логин/пароль в каком то кабинете. Другой my.immf.ru страшный и ужасный — сайт студентов, лажа полная, но все открыто. Открыто и расписание (не понимаю зачем закрывать доступ к расписанию на главном), но часто забывают обновить.
Но одногрупник нашел маленькую недоработку — можно ходить по директориям http://www.immf.ru/download/  . И конечно же там в открытом виде лежит расписание http://www.immf.ru/download/Raspisanie/   в pdf файлах 🙂
Каждый раз вбивать строку в браузер и смотреть, не обновилось ли расписание, мне лень, решил написать скрипт (сначала просто он качал затем и научился уведомлять). Конечно, все будет выполнено средствами linux
Сам скриптик

#!/bin/bash
wget -N --output-file=/tmp/log_wget.txt -P /home/alex/  http://www.immf.ru/download/Raspisanie/shedule_sokr.pdf
if grep -q 'сохранён' /tmp/log_wget.txt
then perl ./jabberMS
fi

Wget мы качаем файлик расписания, если он новее чем у нас на в указанной директории и пишет лог. Дальше grep мы проверяем лог на слово сохранен (если файл не новее то этого слова там не будет). И если условие выполняется, то мы можем отправлять сообщение (файл уже у нас). Дело в том, что я нашел 2 способа программно отправить сообщения в jabber — sendxmpp и скрипт на perl. Заставить работать sendxmpp я так и не смог. Поэтому пришлось воспользоваться скриптом

#!/usr/bin/perl

use Net::XMPP;
use locale;
use utf8;
my $c=new Net::XMPP::Client();
Connect(hostname=>"наш сервер с которого отправляем");
AuthSend(
username=>"логин",
password=>"пароль",
resource=>"Perl");
my $m=new Net::XMPP::Message();
$m->SetMessage(
to=>"hardworm@jabber.ru",
from=>"hardworm@jabber.ru",
body=>"Raspisanie obnovilos");
$c->Send($m);
$c->Disconnect();

Ну и в конце скрипта написано кому, от кого ну и само сообщение. Загоняем в cron наш скрипт, допустим выполняем его каждые 3 часа.

Планируется, всетаки, заставить работать sendxmpp. Возможно, это все сделано все не красиво с программерской точки зрения, зато работает 🙂

автоматизация в учебе: 1 комментарий

  1. Flaming

    А вот у нас такую шнягу сделать нельзя. 🙁 Ибо несмотря на то, что факультет компьютерный, расписание никто никуда не выкладывает в сеть… Всё также толпы студентов, стоящие у расписания.Вообще у нас есть в планах выкладывать расписание в календари от гугла, есть даже реальная возможность, осталось только чтобы руководство факультета на это согласилось.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.