Skrypt - skaner nowości

Problemy dotyczące programowania.

Moderatorzy: Moderatorzy, Administratorzy

Awatar użytkownika
slawul
Użytkownik
Posty: 138
Rejestracja: 2005-08-07, 11:23

Skrypt - skaner nowości

Post autor: slawul »

Witam!

Ciągle powstają nowe programy z których korzystamy, a których nie ma w oficjalnym repo Slackware. Dobrze by było wiedzieć czy jest uaktualniony program który sam kompiluję. Jest trochę takich programów, a nieustanne wchodzenie na strony i sprawdzanie nowości to trochę kłopotliwa sprawa. Chodzi mi o skrypt który sprawdzał by nowości, a w czym to może być - bash, php z curl (już nawet zacząłem coś tworzyć). Tak myślę może ktoś zna, albo ma taki skrypt który po odpowiednich przeróbkach dla moich potrzeb mógłby spełniać moje oczekiwania. :-)

Pozdrawiam!
Ostatnio zmieniony 2007-10-11, 17:30 przez slawul, łącznie zmieniany 1 raz.
[i][size=84]Nigdy nie bój się próbować czegoś nowego... Pamiętaj - Amatorzy zbudowali Arkę, Profesjonaliści Titanica...[/size][/i]
O czym to świadczy?
Awatar użytkownika
sectt
Użytkownik
Posty: 139
Rejestracja: 2006-06-04, 12:15
Lokalizacja: Kraków

Re: Skrypt - skaner nowości

Post autor: sectt »

No to ja już coś zaczełeś to może byś sie pochwalił.
miszmaniac
Moderator
Posty: 1510
Rejestracja: 2006-03-19, 12:00
Lokalizacja: Gdynia
Kontakt:

Re: Skrypt - skaner nowości

Post autor: miszmaniac »

Nie wyobrażam sobie skryptu, który będzie sprawdzał nowości na poszczególnych stronach.
Może np. za pomocą PHP (fread), czy czegoś podobnego ściągać zawartość strony i sprawdzać czy w kodzie strony pojawiło się coś nowego... ale to raczej mizerny pomysł.

Ewentualnie można przeszukiwać katalog serwera, w którym jest dany program, a to też nie zawsze jest łatwe.

Takie rzeczy to tylko w debianie.... (apt-get, aptitude :) )
edit...
To oczywiście miał być żart, brzmiący jak reklama, wiem, że są inne dystrybucje z podobnymi patentami :twisted:
Ostatnio zmieniony 2007-10-11, 22:32 przez miszmaniac, łącznie zmieniany 1 raz.
Pamiętaj,
Jeśli Twój problem został rozwiązany dopisz [b] [Rozw.] [/b]w tytule.
Projektowanie stron WWW: [url=http://www.miszewski.net.pl]www.miszewski.net.pl[/url]
Awatar użytkownika
kajoj
Użytkownik
Posty: 514
Rejestracja: 2005-04-20, 12:37
Lokalizacja: Bydgoszcz
Kontakt:

Re: Skrypt - skaner nowości

Post autor: kajoj »

najprościej:

Kod: Zaznacz cały

#!/bin/sh

md5=`curl -s www.slackware.org | md5sum - | cut -d\  -f 1`
if [ "$1" == "-v" ];then echo "md5=$md5";fi
if [ "$md5" == "45dd0a6ce46b4f93a28219426febf2bb" ];then 
        echo "Po staremu"
else
        echo "mamy nowosc"
fi
[url=http://xt24.eu/sklep/linux/]Koszulki Slackware[/url]
Nie wierz w cuda
- zdaj się na nie.
miszmaniac
Moderator
Posty: 1510
Rejestracja: 2006-03-19, 12:00
Lokalizacja: Gdynia
Kontakt:

Re: Skrypt - skaner nowości

Post autor: miszmaniac »

slawul pisze:a których nie ma w oficjalnym repo Slackware.
Wydaje mi się, że to było kryterium działania programu, że nie ma bazować na slackware.org
Pamiętaj,
Jeśli Twój problem został rozwiązany dopisz [b] [Rozw.] [/b]w tytule.
Projektowanie stron WWW: [url=http://www.miszewski.net.pl]www.miszewski.net.pl[/url]
Awatar użytkownika
slawul
Użytkownik
Posty: 138
Rejestracja: 2005-08-07, 11:23

Re: Skrypt - skaner nowości

Post autor: slawul »

To że zacząłem coś robić w kierunku rozwiązania problemu z uaktualnieniami programów to myślę że ten temat jest godzien uwagi, bo każdemu przydałby się taki skrypt. Mając kilkadziesiąt programów które sam kompiluję, a bycie na bieżąco jest jak najbardziej wskazane - chyba wiemy czemu? ;-) Myślę że są takie skrypty, a jakże skąd by takie serwisy jak np. distrowatch.com były na bieżąco.
sectt pisze:No to ja już coś zaczełeś to może byś sie pochwalił.
To naprawdę w zasadzie niewiele daje poza zapisywaniem do pliku zawartości strony, a ja myślę jak wyodrębnić ze strony nowość - konkretny plik tar.bz2 czy tar.gz i myślę że dobrym rozwiązaniem byłby skrypt bash powiązany z curl, bo curl z php wymaga dodatkowego demona w tle - httpd - oczywiście. kajoj Twój skrypt trochę zachacza o postawiony problem, ale mi chodzi żeby sprawdzał strony: http://aterm.sourceforge.net/ , http://conky.sourceforge.net/ , http://geany.uvena.de/ , http://www.sqlite.org/ - to tylko kilka stron programów z których korzystam i o różnych serwerach nie tylko http://sourceforge.net/. Mówiąc już o skrypcie kajoj dobrze by go tak zmienić by sprawdzał kilka stron pod kątem oprogramowania, a czy sumy kontrolne sprawdzał? to nie wiem mając kilkadziesiąt stron do sprawdzenia wstukuj kilkadziesiąt sum. ;-) Mi chodzi o taki skrypt dajmy na to by sprawdzał te kilkadziesiąt stron - serwerów i np. zapisywał do pliku czy jest coś nowego, co jest nowego, no i numerek kolejnej wersji programu. To tyle narazie. :-)

Pozdrawiam!
[i][size=84]Nigdy nie bój się próbować czegoś nowego... Pamiętaj - Amatorzy zbudowali Arkę, Profesjonaliści Titanica...[/size][/i]
O czym to świadczy?
Awatar użytkownika
kajoj
Użytkownik
Posty: 514
Rejestracja: 2005-04-20, 12:37
Lokalizacja: Bydgoszcz
Kontakt:

Re: Skrypt - skaner nowości

Post autor: kajoj »

nie no jak chcesz się bawić a regexpowanie stron to oczywiście Perl!

Kod: Zaznacz cały

#!/usr/bin/perl -w

use LWP::Simple;
use strict;
use warnings;

my @programs=(
        ['aterm', 'http://www.afterstep.org/download.php', 'Latest stable release : ([0-9.]+)', '2.2.7'],
        ['conky', 'http://conky.sourceforge.net/', 'latest.*<h3>Conky ([0-9.]+)', '1.4.6'],
        ['geany', 'http://geany.uvena.de/Download/Releases', 'geany-([0-9.]+)\.tar\.gz', '0.12'],
        ['sqlite', 'http://www.sqlite.org/download.html', 'sqlite-([0-9.]+)\.tar\.gz', '3.5.1'],
);

for my $prog (@programs) {
        my $body = get($prog->[1]);
        unless ($body) {
                warn "latest: $prog->[1]: unagle to get document: $!";
                next;
        }
        my $pat = $prog->[2];
        if ($body=~/$pat/sm) {
                my $ver=$1;
                if ($ver ne $prog->[3]) {
                        print $prog->[0].": nowa wersja ($ver)\n";
                } else {
                        print $prog->[0].": aktualne\n";
                }
        } else {
                print $prog->[0].": błąd wyszukiwania\n";
        }
}

exit(0);
Ostatnio zmieniony 2007-10-12, 14:46 przez kajoj, łącznie zmieniany 1 raz.
[url=http://xt24.eu/sklep/linux/]Koszulki Slackware[/url]
Nie wierz w cuda
- zdaj się na nie.
Awatar użytkownika
mina86
Moderator
Posty: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

Re: Skrypt - skaner nowości

Post autor: mina86 »

Można też krozystać z kanałów RSS udostępnianych przez niektóre projekty (między innymi wszystkie projekty na SourceForge).
kajoj pisze:my $body=get($prog->[1]) or die "Unable to get document: $!";
Osobiście zmieniłbym na:

Kod: Zaznacz cały

my $body = get($prog->[1]);
unless ($body) {
    warn "latest: $prog->[1]: unagle to get document: $!";
    next;
}


[ Dodano: 2007-10-12, 15:28 ]
slawul pisze: bo curl z php wymaga dodatkowego demona w tle - httpd
Pierwsze słyszę.
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
Awatar użytkownika
kajoj
Użytkownik
Posty: 514
Rejestracja: 2005-04-20, 12:37
Lokalizacja: Bydgoszcz
Kontakt:

Re: Skrypt - skaner nowości

Post autor: kajoj »

mina86 pisze:Osobiście zmieniłbym na ...
No racja.
[url=http://xt24.eu/sklep/linux/]Koszulki Slackware[/url]
Nie wierz w cuda
- zdaj się na nie.
Awatar użytkownika
slawul
Użytkownik
Posty: 138
Rejestracja: 2005-08-07, 11:23

Re: Skrypt - skaner nowości

Post autor: slawul »

Wielkie dzięki kajoj i mina86 skrypt jest w porządku działa, dopisałem już chyba z 15 pozycji. Tylko że nie zamykam tematu jako rozwiązany bo jeden problem z którym nie wiem jak sobie poradzić, a mianowicie jeśli łączy się z http gdzie jest kilka wersji i łapie - jak to się mówi pierwszą z brzegu, a z ftp jest taki problem że wyświetla tylko info ze skryptu:

Kod: Zaznacz cały

warn "latest: $prog->[1]: unagle to get document: $!";
Aha gdyby ktoś chciał skorzystać z tego skryptu niech poprzez wywołanie

Kod: Zaznacz cały

cpan
z perla zainstaluje

Kod: Zaznacz cały

install LWP::Simple
[i][size=84]Nigdy nie bój się próbować czegoś nowego... Pamiętaj - Amatorzy zbudowali Arkę, Profesjonaliści Titanica...[/size][/i]
O czym to świadczy?
Awatar użytkownika
kajoj
Użytkownik
Posty: 514
Rejestracja: 2005-04-20, 12:37
Lokalizacja: Bydgoszcz
Kontakt:

Re: Skrypt - skaner nowości

Post autor: kajoj »

slawul pisze:łapie - jak to się mówi pierwszą z brzegu
To napisz taki pattern żeby łapał to co chcesz.
slawul pisze:ftp jest taki problem
bo ftp nie jest obsługiwane (jeszcze). Coś się poradzi.

[ Dodano: 2007-10-13, 16:59 ]
Wersja z obsługą HTTP, FTP, Gopher, News i plików lokalnych.

Kod: Zaznacz cały

#!/usr/bin/perl -w

use LWP::UserAgent;
use HTTP::Request;

use strict;
use warnings;

my @programs=(
        ['aterm', 'http://www.afterstep.org/download.php', 'Latest stable release : ([0-9.]+)', '2.2.7'],
        ['conky', 'http://conky.sourceforge.net/', 'latest.*<h3>Conky ([0-9.]+)', '1.4.6'],
        ['geany', 'http://geany.uvena.de/Download/Releases', 'geany-([0-9.]+)\.tar\.gz', '0.12'],
        ['sqlite', 'http://www.sqlite.org/download.html', 'sqlite-([0-9.]+)\.tar\.gz', '3.5.1'],
        ['apache', 'ftp://ftp.tpnet.pl/d1/apache/httpd/', 'apache_([0-9.]+)\.tar\.gz', '1.2.3'],
        ['error', 'http://bardzo.dziny.popsuty.adres.tld', 'error-(.*).exe', '666'],
);

my $ua = LWP::UserAgent->new;

for my $prog (@programs) {
        my $req = HTTP::Request->new(GET => $prog->[1]);
        my $res = $ua->request($req);

        if (! $res->is_success) {
                print "$prog->[0]: błąd przy pobieraniu informacji z $prog->[1]\n";
                next;
        }
        my $body = $res->content;
        my $pat = $prog->[2];
        if ($body=~/$pat/sm) {
                my $ver=$1;
                if ($ver ne $prog->[3]) {
                        print $prog->[0].": nowa wersja ($ver)\n";
                } else {
                        print $prog->[0].": aktualne\n";
                }
        } else {
                print $prog->[0].": błąd wyszukiwania\n";
        }
}

exit(0);
[url=http://xt24.eu/sklep/linux/]Koszulki Slackware[/url]
Nie wierz w cuda
- zdaj się na nie.
Awatar użytkownika
slawul
Użytkownik
Posty: 138
Rejestracja: 2005-08-07, 11:23

Re: Skrypt - skaner nowości

Post autor: slawul »

Pomimo poprawki skryptu jednak nie chce mi łapać ftp. Już wpisałem inne adresy i ciągle ten sam wynik:

Kod: Zaznacz cały

błąd wyszukiwania
Nie wiem w czym problem. Mimo wszystko skrypt się przydaje, a łapanie "pierwszego z brzegu" w końcu nie łapie jak są np:

Kod: Zaznacz cały

'.*aterm-(1\.0\.[0-9.]+)\.tar\.bz2', '1.0.1'
tylko jak zmieni się wersja na 1.1.1 to znów będzie podobny efekt jakby "pierwszy z brzegu". No cóż czas na perla - samemu się wgłębiać. :-)
Ostatnio zmieniony 2007-10-15, 21:21 przez slawul, łącznie zmieniany 1 raz.
[i][size=84]Nigdy nie bój się próbować czegoś nowego... Pamiętaj - Amatorzy zbudowali Arkę, Profesjonaliści Titanica...[/size][/i]
O czym to świadczy?
ODPOWIEDZ