OE PowerTool 4.5.5
Twój adres IP to: 3.239.87.20
Przeglądarka: CCBot/2.0 (https://commoncrawl.org/faq/)
lynx -dump http://www.strona.pl > powiadamianie.tmp
VALID=`grep wyraztestowy < powiadamianie.tmp | wc -l`
if [ $VALID \> 0 ]
then
if ! `cmp -s powiadamianie.src powiadamianie.tmp`
then
echo "Zmiana!"
fi
rm powiadamianie.src
mv powiadamianie.tmp powiadamianie.src
fi
Kilka słów omówienia. Najpierw ściągamy stronę lynksem (po sparsowaniu, nie źródło) do pliku powiadamianie.tmp
. Następnie szukamy grepem pewnego słowa (tutaj jest to "wyraztestowy") żeby zabezpieczyć się przed przypadkiem gdy lynx nic nie ściągnie albo ściągnie jakiś komunikat błędu np. na skutek niedziałania strony. Wybieramy więc słowo, które zawsze jest na stronie a nie ma go w komunikatach typu "Bandwidth Limit Exceeded". wc liczy linijki z tym słowem. Jeśli jest chociaż jedna, jedziemy dalej. Sprawdzenie wykonuje instrukcja if. Potem jest kolejne, najważniejsze sprawdzenie - określenie, czy jest różnica między bieżącym plikiem (bieżącą zawartością strony) a poprzednim (poprzednią zawartością strony). Jeśli tak to przechodzimy do części powiadamiającej. Zanim jednak ją omówimy, wprowadzimy dwie poprawki:
touch powiadamianie.src
timeout 20 lynx -dump http://www.strona.pl > powiadamianie.tmp
VALID=`grep wyraztestowy < powiadamianie.tmp | wc -l`
if [ $VALID \> 0 ]
then
if ! `cmp -s powiadamianie.src powiadamianie.tmp`
then
echo "Zmiana!"
fi
rm powiadamianie.src
mv powiadamianie.tmp powiadamianie.src
fi
Poleceniem timeout sprawiamy, że jeśli lynx w ciągu 20 sekund nie ściągnie strony, zostanie zabity. Dodajemy jeszcze polecenie touch żeby była pewność, że polecenie cmd dostanie plik powiadamianie.src
. Dochodzimy do najważniejszej części: wysłania SMSa. Do tego potrzebny nam będzie program, który udając przeglądarkę wyśle SMSa z bramki operatora. Na szczęścia takich programów trochę jest więc nie ma problemu. Ja wykorzystałem program ze strony http://ceti.pl/~miki/komputery/sms.html. Instalacji tego programu nie będę omawiać bo każdy użytkownik Linuksa wie jak to się robi. Problemem może być to, że program korzysta z paru bibliotek, których możemy nie mieć zainstalowanych. Należy je oczywiście doinstalować. Ponadto ja miałem problem z biblioteką pcre++ po której skompilowaniu polecenie make install
nie kopiowało pliku libpcre++.so.0.0.0
i dowiązań libpcre++.so i libpcre++.so.0
do katalogu /usr/lib
i musiałem zrobić to ręcznie. Gdy program do wysyłania SMSów zostanie zainstalowany, musimy poczytać jak się wysyła SMSy z danej bramki. Ja wykorzystałem bramkę Ery. Gdy już umiemy wysłać SMSa, wstawiamy odpowiednią linijkę do naszego skryptu:
touch powiadamianie.src
timeout 20 lynx -dump http://www.strona.pl > powiadamianie.tmp
VALID=`grep wyraztestowy < powiadamianie.tmp | wc -l`
if [ $VALID \> 0 ]
then
if ! `cmp -s powiadamianie.src powiadamianie.tmp`
then
echo "Zmiana!"
sms -g era -m "Zmiana na www.strona.pl!" -n 606123123 -o omnix_user=48606123123 -o omnix_pass=mojehaslo
fi
rm powiadamianie.src
mv powiadamianie.tmp powiadamianie.src
fi
touch powiadamianie.src
timeout 20 lynx -dump http://www.strona.pl > powiadamianie.tmp
VALID=`grep wyraztestowy < powiadamianie.tmp | wc -l`
if [ $VALID \> 0 ]
then
if ! `cmp -s powiadamianie.src powiadamianie.tmp`
then
echo "Zmiana!"
diff powiadamianie.src powiadamianie.tmp > powiadamianie.diff
ftp-upload -h ftp.republika.pl -u mojekonto --password mojehaslo powiadamianie.diff
sms -g era -m "Zmiana na www.strona.pl!" -n 606123123 -o omnix_user=48606123123 -o omnix_pass=mojehaslo
fi
rm powiadamianie.src
mv powiadamianie.tmp powiadamianie.src
fi
diff
porównuje pliki a wynik jest zapisywany do powiadomienie.diff
. Następnie program ftp-upload
wrzuca ten plik przez FTP na stronkę. Skrypt już mamy gotowy. Pozostaje jeszcze jego automatyczne wykonywanie co określoną ilość czasu. Do tego wykorzystamy crona. Dorzucamy do niego wpis w rodzaju:*/1 * * * * /home/user/powiadamianie.sh
powiadamianie.sh
i jest w katalogu domowym użytkownika user
. */1
oznacza uruchamianie co minutę. Wiąże się z tym generowanie pewnego ruchu. Chociaż ściągnięcie strony raz na minutę to nie jest coś co może zapchać łącza albo przeciążyć serwer to jest pewne prawdopodobieństwo, że paranoiczny admin danej strony może się wkurzyć i np. nas odciąć. Dlatego przedział czasowy trzeba wybrać z rozwagą. Z drugiej strony większość adminów nie czyta logów więc niebezpieczeństwo nie jest duże.
touch powiadamianie.src
timeout 20 lynx -dump http://www.knf.pw.edu.pl > powiadamianie.tmp
VALID=`grep Warszawa < powiadamianie.tmp | wc -l`
if [ $VALID \> 0 ]
then
if ! `cmp -s powiadamianie.src powiadamianie.tmp`
then
diff powiadamianie.src powiadamianie.tmp > powiadamianie.diff
ftp-upload -h ftp.republika.pl -u mojekonto --password mojehaslo powiadamianie.diff
sms -g era -m "Zmiana na stronie KNF!" -n 606123123 -o omnix_user=48606123123 -o omnix_pass=mojehaslo
fi
rm powiadamianie.src
mv powiadamianie.tmp powiadamianie.src
fi