Friss tartalmat jelző script a Linux Mint Magyar Közösség fórumához

kimarite képe

Igény mutatkozott a friss hozzászólásokat jelző alkalmazásra, így megpróbáltam ezt a témát körbejárni, a „problémára” megoldást találni. A jelenlegi megoldás kicsit gyerekcipőben jár, azaz „mindössze” egy script-ről van szó, amely elvégzi a feladatot. Mindazonáltal értem, van és volt értelme a megoldás keresni, hiszen a Linux Mint Magyar Közösség weboldalra, a belépés nélkül nem mindig látszanak azonnal a legfrissebb hozzászólások. Ennek oka egyrészt az, hogy a friss hozzászólások csak belépett felhasználónál jelennek meg azonnal a „Friss” oldalon, belépés nélkül azonban a megjelenés kicsit késleltetve van. Egyik oka ennek technikai, informatikai. A másik ok egy érthető cél, hogy a regisztrált felhasználók számát növeljük, gyakorlatiasabban megfogalmazva, hogy a felhasználók lépjenek be a fórumra, szóljanak hozzá minél többet (és lehetőleg hasznosat) és ne csak kívülről tekintsék meg a fórumot, a blogokat, tehát lehetőleg maradandó dolgot ... alkossanak.

A script-nek először is célszerű egy munkakönyvtárat létrehozni:

mkdir -p /home/$USER/bin/monitorURL/work/

Először is létrehozod a saját könyvtáradban a bin könyvtárat, majd azon belül a script lakhelyét, a monitorURL könyvtárat, majd ezen belül a különbség fájlokat tároló work könyvtárat. Az mkdir parancs (make directory / könyvtár létrehozás) p kapcsolója biztosítja azt, ha az elérési útban egy-egy könyvtár még nem létezik, akkor az mkdir ezzel nem foglalkozik (nem dob hibaüzenetet), hanem létrehozza a teljes könyvtárfát, azaz a teljes elérési út létrejön, az összes új könyvtárral együtt.

A script létrehozása és megnyitása szerkesztésre:

nano /home/$USER/bin/monitorURL/MonitorChangesOnaWebpage.sh

A korábbi könyvtár elnevezések egyediek, mint például a script neve is: MonitorChangesOnaWebpage.sh
Választhatsz más nevet is.

A script szöveges tartalma:

#!/bin/bash

#--------------------------------------------------------------------------------
# Monitors the changes in a webpage
#
# To run it:
# ./monitorwebpage.sh http://www.thewebpage.io mywebpage
# where `http://www.thewebpage.io` is the address of the page you want to follow,
# and mywebpage a suffix (default: page), needed if you monitor multiple pages at once.
# -> The program checks the website every 15 minutes (timing can be changed),
#    and if there is a change, opens the new webpage.
#
#
#
# NOTES:
#
# This script works with Ubuntu;
# On a Mac, replace "xdg-open" by "open"
#
# Source of some of the code:
# http://bhfsteve.blogspot.fr/2013/03/monitoring-web-page-for-changes-using.html
# And this script source: https://trucastuces.wordpress.com/2017/04/21/monitor-changes-on-a-webpage/
#--------------------------------------------------------------------------------

# URL to monitor is entered as input
URL="$1"
# The second argument is optional, it is a suffix for the webpage
# if we want to monitor multiple webpages at once
# SUFF=${2:-page}

# Error message if not argument is supplied
if [[ -z "$*"  ]] ; then
echo "Error: you need to enter a webpage as argument!
(don't forget http://)"
exit 0
fi

echo "Monitoring "${URL}

chmod -R 774 /home/$USER/bin/monitorURL/work/

chmod -R 664 /home/$USER/bin/monitorURL/work/*

cd /home/$USER/bin/monitorURL/work/

# Initialization: download the webpage once to create old.html
# curl ${URL} -L --compressed -s > old${SUFF}.html
curl ${URL} -L --compressed -s > old.html

for (( ; ; )); do # (Infinite loop)
# Change the name of new.html into old.html,
# and erase potential error messages (2> /dev/null)
# mv new${SUFF}.html old${SUFF}.html 2> /dev/null
mv new.html old.html 2> /dev/null

# Print time at which the page is checked
THEDATE="$(date)"
echo "Last checked: ${THEDATE}"

# Download the webpage
# curl ${URL} -L --compressed -s > new${SUFF}.html
curl ${URL} -L --compressed -s > new.html
#  -L means that we follow potential redirections
#  --compressed compresses,
#  -s for quiet mode,
#  and save the output in new.html.

# Compare the two versions
# DIFF_OUTPUT="$(diff new${SUFF}.html old${SUFF}.html)"
DIFF_OUTPUT="$(diff new.html old.html)"
# If there are differences:
if [ "${DIFF_OUTPUT}" != "" ]; then
# open the webpage
URL="$1"
xdg-open ${URL}
continue
fi
# Then wait for 15 minutes before checking the website again
# Then wait for 20 seconds before checking the website again
# sleep 15m
sleep 20s
done

Mentés és kilépés a nano szövegszerkesztőből:

Ctrl + O, majd Enter és
Ctrl + X

A parancsfájlt (script) futtathatóvá kell tenni, hogy indíthasd:

chmod +x /home/$USER/bin/monitorURL/MonitorChangesOnaWebpage.sh

Nyitsz egy terminált, és belépsz a könyvtárba, ahol a script-tet létrehoztad:

cd /home/$USER/bin/monitorURL/

És így indítod a script-tet:

./MonitorChangesOnaWebpage.sh https://linuxmint.hu/tracker

Az URL-nek benne kell lennie a parancsban. Ha nincs ott, akkor figyelmeztetést kapsz:
"Error: you need to enter a webpage as argument! (don't forget http://)"

Ha új hozzászólás érkezik, akkor arról értesítve leszel. Az történik, hogy a böngésződ a

https://linuxmint.hu/tracker

oldalon nyílik meg, azaz, a Friss hozzászólásoknál.
Ha az oldalra
-- be vagy lépve, akkor azonnal és közvetlenül nyitható meg a hozzászólás,
-- nem vagy belépve, akkor a hozzászólásra reagáláshoz előbb be kell lépned.

A script jelenleg nem alkalmas arra a feladatra, hogy pontosan az új hozzászóláshoz vigyen.

Enjoy :-)

Forrás:
https://trucastuces.wordpress.com/2017/04/21/monitor-changes-on-a-webpage/
http://bhfsteve.blogspot.fr/2013/03/monitoring-web-page-for-changes-using.html

Működés

A figyeléshez a megnyitott terminál szükséges, de a háttérbe is lehet küldeni a munkafolyamatot. Utóbbi témával később esetleg még foglalkozom. ... de például az egyik, forrásként szereplő blogban említett nohup parancs

nohup ./MonitorChangesOnaWebpage.sh https://linuxmint.hu/tracker &

az egyik megoldás lehet.

Folytassuk ...

Mindez kb. így néz ki (ezt látod a terminálban a helyes működés esetén):

./MonitorChangesOnaWebpage.sh https://linuxmint.hu/tracker
Monitoring https://linuxmint.hu/tracker
Last checked: 2019. márc. 5., kedd, 10:46:57 CET
Last checked: 2019. márc. 5., kedd, 10:47:17 CET
Last checked: 2019. márc. 5., kedd, 10:47:38 CET
Last checked: 2019. márc. 5., kedd, 10:47:58 CET
Last checked: 2019. márc. 5., kedd, 10:48:18 CET
Last checked: 2019. márc. 5., kedd, 10:48:38 CET
Last checked: 2019. márc. 5., kedd, 10:48:58 CET
Last checked: 2019. márc. 5., kedd, 10:49:18 CET
Last checked: 2019. márc. 5., kedd, 10:49:38 CET
Last checked: 2019. márc. 5., kedd, 10:49:58 CET
...

A script a Linux Mint honlap friss hozzászólásainak figyelésére alkalmas, más honlap figyeléséhez (vélhetően) át kell alakítani.
A Cinnamon alkalmazásként elérhető hasonló feladatot ellátó alkalmazás inkább a nemzetközi honlap hozzászólásainak figyelésére alkalmas. Habár, nem kizárt, azzal is meg lehet oldani mindezt.

Magyarázat(ok)

-- ha a kiemelt sor elől eltávolítod a kommentet (#), akkor csak egyszer fut le a script, azaz egy friss hozzászólás jelez és aztán kilép (ahogy ezt az „# if we want” kezdetű magyarázat is mondja)

# The second argument is optional, it is a suffix for the webpage
# if we want to monitor multiple webpages at once
# SUFF=${2:-page}

... a kapcsolódó beállításokat kommenteltem (#). És alattuk létrehoztam egy új megfelelőséget, a SUFFIX nélkül.

Ezeket a sorokat kommenteltem, azaz magyarázatba tettem:

# curl ${URL} -L --compressed -s > old${SUFF}.html
# mv new${SUFF}.html old${SUFF}.html 2> /dev/null
# curl ${URL} -L --compressed -s > new${SUFF}.html
# DIFF_OUTPUT="$(diff new${SUFF}.html old${SUFF}.html)"

És alattuk létrehoztam egy új megfelelőséget, a korábban kikapcsolt, azaz kommentelt SUFFIX nélkül.

Szerkesztettem a két vizsgálat között eltelt időt (a korábbi 15 percről 20 másodperc időtartamra) és ezt az eredeti megjegyzés alatt új megjegyzésben le is írtam:

# Then wait for 15 minutes before checking the website again
# Then wait for 20 seconds before checking the website again
# sleep 15m
sleep 20s
done

Fontos

Ezt a két sort kihagyhatod a parancsfájlból (vagy akár benne is hagyhatod):

chmod -R 774 /home/$USER/bin/monitorURL/work/

chmod -R 664 /home/$USER/bin/monitorURL/work/*

Korábban arra gyanakodtam, hogy hiányzó jogok miatt áll le a script (és erre írtam a fentieket), de nem ez volt a leállás oka, hanem az, hogy az „xdg-open ${URL}” sor után szereplő break kifejezést a continue kifejezésre kellett cserélni. A „break” biztosítja azt, hogy az alapértelmezett böngésződ csak egyszer nyílik meg, és nem végtelen alkalommal.

Hozzászólások

Köszi

Már rég kerestem ilyent, a Steve blogjában lévőt használtam egy ideig. 

Egy elírás van szerintem:

"Nyitsz egy terminált, és belépsz a munkakönyvtárba:

cd /home/$USER/bin/monitorURL/"
Ez helyesen: 

cd /home/$USER/bin/monitorURL/work/

És ez a válaszom jó olt tesznek is. Müködik :)

 

Értékelés: 

0
Még nincs értékelve
kimarite képe

Köszi

#1 Valóban jót írsz, de én gépeltem (másoltam) rosszul. :-)

A script valójában a work könyvtárat tartalmazó könyvtár felett van egy könyvtárral, és javítom is majd a leírást. Úgyhogy -tulajdonképpen - én is köszönöm. A.változó két fájl van szándékosan a work könyvtárban csak. Az eredeti script mellé kerülnének amúgy a HTM fájlok. Mármint az ötlet források szerint.

Valami GUI is kéne. Esetleg ötlet? ... utána valami közös Creative Commons licenc a script-re.

Értékelés: 

0
Még nincs értékelve
kimarite képe

Köszi

#1.1 Szóval a script lakhelye ez a könyvtár,

/home/$USER/bin/monitorURL/

:-) ami persze, a lényegen nem változtat, hogy így is és amúgy is működik mindez.

Két, három napja említettem a scriptet itt, de egy másik bejegyzésnél. Aztán jegeltem, és ma foglalkoztam ezzel ismét. Őszintén szólva, megkevert egy barátom magyarázata, hogy a "break" miért is kell. Leírtam a blogban, miért. Így csak később próbáltam egész mást, akár kihagyni ezt. Mármint, saját ötletként. Most akkor, a barátomat is megemlítem, inkább név szerint, mert nemrég egyszer a szakmáját említettem, és egyszer ő is megemlítette a keresztnevem valamely hasonló segítős dologgal kapcsolatban (más weboldalon). Tehát Feri segített. Az Open Source lényege -amúgy is- a csoport munka!

 

Értékelés: 

0
Még nincs értékelve
kimarite képe

nohup

Ha a nohup alkalmazással használod a script-tet, azaz a folyamatot a háttérbe küldöd.

Az indítás módja:

cd /home/$USER/bin/monitorURL/
nohup ./MonitorChangesOnaWebpage.sh https://linuxmint.hu/tracker &

Látod a folyamat PID számát,

[1] 14825

és még ezt is.

nohup: bemenet figyelmen kívül hagyása és kimenet hozzáfűzése a következőhöz: 'nohup.out'

Megnyomod: Ctrl + C
Ezzel visszakapod a felhasználói prompt-tot.
De akár előtte vagy utána nyugodtan bezárhatod a terminál ablakot, a folyamat futni fog a háttérben.

Bármikor ránézhetsz, fut-e a folyamat, ha nyitsz egy terminált:

cd /home/$USER/bin/monitorURL/
tail -f nohup.out

Igen.

Monitoring https://linuxmint.hu/tracker
Last checked: 2019. márc. 6., szerda, 16:01:50 CET
Last checked: 2019. márc. 6., szerda, 16:02:10 CET
Last checked: 2019. márc. 6., szerda, 16:02:30 CET
Last checked: 2019. márc. 6., szerda, 16:02:50 CET
Last checked: 2019. márc. 6., szerda, 16:03:10 CET
Last checked: 2019. márc. 6., szerda, 16:03:30 CET
Last checked: 2019. márc. 6., szerda, 16:03:51 CET
Last checked: 2019. márc. 6., szerda, 16:04:11 CET
Last checked: 2019. márc. 6., szerda, 16:04:31 CET
Last checked: 2019. márc. 6., szerda, 16:04:51 CET

A prompt-tot szintén ugyanúgy kapod vissza: Ctrl + C
A folyamat tovább fut a háttérben.

Ha leállítanád a folyamatot ...

Megkeresed a folyamat PID-jét:
(PID: Process ID)

cd /home/$USER/bin/monitorURL/
fuser nohup.out

... a kiemelt szám az, vagyis az első (a kimenetben)

/home/kim/bin/monitorURL/nohup.out: 14825 14710

Kilövöd, azaz leállítod,

kill -SIGUSR1 14825

... kimenet nincs, visszatér a prompt.
Ez azt jelenti, minden rendben.

A teszt parancs

fuser nohup.out

ezt mondja,

[1]+  Felhasználói 1-es szignál    nohup ./MonitorChangesOnaWebpage.sh https://linuxmint.hu/tracker

és a számláló is megállt öt perce.

tail -f nohup.out
Last checked: 2019. márc. 6., szerda, 16:11:52 CET
Last checked: 2019. márc. 6., szerda, 16:12:13 CET
Last checked: 2019. márc. 6., szerda, 16:12:33 CET
Monitoring https://linuxmint.hu/tracker
Last checked: 2019. márc. 6., szerda, 16:14:47 CET
Last checked: 2019. márc. 6., szerda, 16:15:07 CET
Last checked: 2019. márc. 6., szerda, 16:15:27 CET
Last checked: 2019. márc. 6., szerda, 16:15:47 CET
Last checked: 2019. márc. 6., szerda, 16:16:07 CET
Last checked: 2019. márc. 6., szerda, 16:16:27 CET

Megint: Ctrl + C

Megállítottuk a folyamatot.

Értékelés: 

0
Még nincs értékelve