Portál AbcLinuxu, 18. dubna 2024 11:45
V samotném Bashi by to šlo (umí TCP i UDP), ale to pravděpodobně nechceš.
Jednodušší bude přes wget
stáhnout stránku a pomocí diff
porovnat proti předchozí verzi, kterou sis uložil minule.
Potíž může nastat v případě, že se stránka dynamicky mění, např. obsahuje náhodný citát, dnešní svátek nebo datum atd. Pak by ti to hlásilo změny, i když by se ten podstatný obsah nezměnil. V tom případě potřebuješ porovnat jen obsah relevantních elementů – k tomu můžeš použít XPath (xpath
), XQuery (galax-run
nebo basex
) nebo XSLT (xsltproc
). Pokud je kód té stránky zprasený-nevalidní, tak před to budeš muset předřadit tidy
, ale to je jen jeden příkaz/filtr.
wget
/ curl
, správnu časť si regulárnym výrazom vyseknúť cez sed
, a potom porovnať voči predtým uloženému stavu cez diff
. Výsledok buď poslať ručne cez mail
, alebo to len vypísať na stdout a nechať cron.
A chceš hledat nějaký řetězec na stránce, nebo zjišťovat, zda se od minule změnila?
Tohle poprvé spadne (soubor kurzy.txt
ještě neexistuje) a pak ti to bude vypisovat rozdíl od minule:
diff kurzy.txt <(wget -O - -o /dev/null http://www.cnb.cz/cs/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/denni_kurz.txt | tee kurzy.txt)
Když to dáš do cronu, tak ti bude ten rozdíl chodit e-mailem.
Pokud hledáš konkrétní text, tak je to jednodušší:
wget -o /dev/null -O - http://www.cnb.cz/cs/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/denni_kurz.txt | grep -q "USD" && echo "stránka obsahuje požadovaný text"
Tiskni Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.