Kezdőlap › Fórumok › Programozás › „Csak guruknak” – konyhanyelven…
- This topic has 150 hozzászólás, 25 résztvevő, and was last updated 15 years, 8 months telt el by
uzsolt.
-
SzerzőBejegyzés
-
2007-03-24-22:08 #2081688
Gondoltam, összedobok gyorsan egy szkriptet, ami valami cron-démon segítségével megadott időközönként ellenőrzi a megadott weboldalak tartalmát, hogyha esetleg újdonság keletkezik, arról én is értesüljek. Mielőtt még valaki mondaná, hogy RSS, mondanám, hogy sajna nem mindegyik oldalon van ilyen.
Szóval, akkor a szkript:Code:#!/bin/bashMD5SUM_FILE=/etc/webdiff/md5sums
CURDIR=`pwd`for i in `cat /etc/webdiff/webdiff.conf`; do
DIR=`mktemp -d`
cd $DIR
wget $i &> /dev/null
RESULT=$(grep „$i ” $MD5SUM_FILE 2>/dev/null)
if [ „$RESULT” = „” ]; then
(echo -n „$i ” ; md5sum $(basename $i)) >> $MD5SUM_FILE
else
if ( ( echo $RESULT | awk {‘print $2″ „$3’} ) | md5sum -c –status); then # Nincs változás
true
else # Változás történt
if ( pidof X > /dev/null ); then
echo „Változás: $i” | osd_cat &
else
echo „Változás: $i”
fi
echo „Változás: $i” >> /home/zsolt/WEBLAP-VALTOZAS
LINE=$(grep -n ‘$RESULT’ $MD5SUM_FILE | awk -F „:” {‘print $1’})
sed -i „${LINE}d” $MD5SUM_FILE
(echo -n „$i ” ; md5sum $(basename $i)) >> $MD5SUM_FILE
fi
fi
rm $(basename $i)
cd $CURDIR
rmdir $DIR
doneAmi kell hozzá: md5sum, mktemp, awk, wget, osd_cat (xosd része). Meg persze a szokásos alapdolgok. Na meg nem árt, ha a /etc/webdiff könyvtárra a futtatónak van írásjoga 🙂 Persze át lehet írni más könyvtárra is.
A /etc/webdiff/webdiff.conf megadja, hogy mely honlapokat kell ellenőrizni. Szerkezete: új sorokkal elválasztva a honlapcímek (htm(l)-fájlokat kell megadni!).Az else-ágba bármit lehet írni, hogy mi fusson le, ha valami változás történt. Jelen esetben ha megy az X, akkor a root-ba beírja az üzit, ha nem, akkor szimplán egy echo zajlik le. Meg ha véletlenül elkerülné a figyelmem, még egy WEBLAP-VALTOZAS nevű fájlba is beírok (amit lehet, hogy egy gkrellm-ben fogok figyelni a megfelelő plugin-nel).
Nyilván, ha az osd_cat helyett mást írsz, akkor az osd_cat nem kell 😉Remélem, hasznotokra válik :-*
2007-03-25-06:12 #2081689Ötlet: szerintem /home/zsolt helyett érdemesebb lenne $HOME -ot írni, hogy a szkript bárhol használható legyen.
2007-03-25-08:10 #2081690Azért nem lenne túlságosan jó, mert mi van, ha a root futtatja? Akkor a /root-ba kerül a megfelelő fájl és a zsolt user cseszheti, mert azt meg nem olvashatja. A /home/zsolt-ot a root pedig úgyis írhatja 😉
Sőt, inkább egy „közös” fájlt kellene létrehozni, vagy mindenki saját maga futtatja. Ez legyen a ti gondotok, az alapot én megcsináltam, és az én kis egyfelhasználós (+root, +apache, +mysql, +progs) rendszeremben teljesen jó 😛2007-03-25-12:10 #2081691ez egy ideiglenes file, írjon egyszerűen a /tmp-be,
2007-03-25-12:41 #2081692Mármint a WEBLAP-VALTOZAS-t? Szerintem az abból a szempontból nem szerencsés, mivel a legtöbb disztró boot-kor tisztítja.
Ahogy most nálam van megvalósítva:
~/.webdiff/ könyvtárba mindegyik figyelendő honlapnak van egy fájlja (amit a /etc/webdiff/webdiff.conf fájl második oszlopa ad meg, olyan LABEL módon), amibe a változás bekerül, mégpedig dátummal ellátva a legelső sorba, mivel a Fileread gkrellm-plugint találtam a legalkalmasabbnak, ami a fájl első sorát jeleníti meg.2007-03-25-16:07 #2081693én a diff adatokra gondoltam amit letölt, egyebet tárolhatsz a /var/cache-ben is, a programot lehet daemonként vagy cron-ból is futtatni akár és ott tudja az user olvasni ha kell
2007-03-25-16:28 #2081694Ja, igen. Csak nekem így jobban tetszik, egy helyen van minden 😉
Gondolkodtam is rajta, hogy hova tegyem, aztán nem variáltam, jó lesz az ott. Amúgy igen, (f)cron-ban fut.2007-04-09-11:01 #2081695Kiegészítés: ha php alapú az oldal, akkor egy w3m -dump-ot célszerű használni a wget helyett, a dump-olt cuccra egy md5sum-ot gyártani, stb.
Amúgy tök jól megy, ma láttam, hogy a http://www.wesnoth.org mai dátummal változott 🙂
2007-04-24-15:41 #2081696Na, akkor visszatértem a témába.
Code:#!/bin/shprg=`basename $0`
retn=””mount_umount()
{
mnt=`mount | grep „${prg}”`if [ „${mnt}.” = „.” ]; then
echo „mounting /mnt/${prg}…”
mount /mnt/${prg}
return 1
else
echo „umounting /mnt/${prg}…”
umount /mnt/${prg}
return 2
fi
}if test $# -eq 0; then
mount_umount
elif test $# -eq 1; then
mount_umount
retn=$?case „$1” in
mc)
if test ${retn} -eq 1; then
mc /mnt/${prg} ~
fi
;;
esac
fiEz egy kis csatoló alkalmazás, azoknak, akik lusták*, de türelmetlenek**. :)))
Lényeg a következő:
beszúrunk az fstabba pl. a következőt:Code:/dev/uba1 /mnt/pendrive …elmentjük a fenti file-t „pendrive” néven (a „path”-ba)
majd a „pendrive” paranccsal (vagy rámutató ikonnal***) csatolhatjuk, vagy eltávolíthatjuk a pendrive-ot (ami éppen következik :)).
A poén kedvéért betettem még egy flik-flakkot: a „pendrive mc” parancs hatására a csatolás után (a leválasztás után nem) megnyílik az mc a pendrive és a ~ tartalmával a két panelen. (Természetesen bármilyen más alkalmazást is oda lehet biggyeszteni.)
Jó szórakozást!
* kézimunka kizárva
** lassú animált sz@rok, auto-mount elfelejtve
*** ez esetben ne felejtsük el, hogy pl. az mc terminálban fog csak működni, tehát válasszunk mást, vagy írjuk át azt a sort, hogy terminálba futhasson2007-04-30-21:23 #2081697Már megint megszállt az ihlet (vagy inkább a szükség 😛 ):
tv-műsor konzolra
Code:#!/bin/bashCONFIG_FILE=~/.config/tvmusor.cfg
exec 9>&0 &1 | grep title | uni2ascii -d 2>/dev/null | awk -F „=
” {‘print „t”$2’} > $TMPFILE
echo „$(cat $TMPFILE | head -n 1 )”
echo „$(cat $TMPFILE | sed ‘1 d’)”
echo
done
rm $TMPFILEA ~/.config/tvmusor.cfg (nálam, de a CONFIG_FILE-t másra is átírhatod):
Code:1=m1
2=m2
6=Duna TV
3=TV2
5=RTL Klub
16=Viasat3
28=Cool TV
25=Film+
43=Filmmuzeum
32=Discovery
13=National Geographic
9=SpektrumAmi kell: nyilván net, meg az rsstool nevű csoda. Az infot az animare.hu oldalról szedjük, ott az ember rámegy az rss-jelre, és látja, hogy mi a csatorna „kódja” (http://www.animare.hu/rss.aspx?channel=tvchannel&filter=%5Bred%5D32%5B/red%5D a discovery).
Persze eszképe-szekvenciákkal az echo kimenete szinezhető is (ahogy nálam is van). Ezt egy terminálban (akár x, akár nem) lehet futtatni, mondjuk egy
Code:while true; do tvmusor ; sleep 900 ; donemódon. Ilyenkor 15 percenként szedi az infót.
Főleg ha pl. egy teljesen átlátszó eterm-be rakjuk, aminek semmilye sincs (keret, görgető, …), akkor nagyon jól néz ki.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz