Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Script voor vergelijken van inhoud van bestanden  (gelezen 10729 keer)

Re: Script voor vergelijken van inhoud van bestanden
« Reactie #25 Gepost op: 2011/11/09, 22:15:04 »
Misschien wordt het eens tijd dat je iets duidelijker maakt wat je precies wil bereiken met het geheel, dan zijn hier vast wel mensen die een goed idee hebben hoe dat het beste kan.  ;)

Re: Script voor vergelijken van inhoud van bestanden
« Reactie #26 Gepost op: 2011/11/09, 22:33:50 »
Misschien wordt het eens tijd dat je iets duidelijker maakt wat je precies wil bereiken met het geheel, dan zijn hier vast wel mensen die een goed idee hebben hoe dat het beste kan.  ;)
Das wel een goede:
Het gaat er vooral om dat je met dit script webpagina's kan ophalen en vergelijken... Om te kijken of er verschil tussen zit.
Het is bedoeld voor kijken naar posts... Dat je een melding krijgt als er een nieuwe post ergens op staat, een forum ofzo.
Ik ben samen met wat andere mensen (Nou ja, eigenlijk gewoon een stel tieners met grote waanzin  :D) bezig om een webapp te maken waarmee je o.a. dit soort dingen kunt doen, en andere kleine, basis dingen.

Het basis script wat ik gebruik voor dit deel v. d. app is dus gewoon:
- Variabelen ingeven voor bijv. het om de hoeveel min. checken of er een nieuwe post is...
- Het vergelijken van die twee pagina's, maar dan zo dat een verschil van kleiner dan 50 tekens (ofzo) niet word gezien als verschil (aangezien bijv. een 'view-counter' zou dan problemen opleveren)
- Als er een verschil in zit (groter dan 50 tekens) geef dan een melding dat er een nieuwe post is, zo niet, ga dan stap 2 weer doen.

Het basis script ziet er nu alsvolgd uit:
#!/bin/bash

Site001=$(zenity --entry --text "Welke site?"); echo $Site001

Time001=$(zenity --entry --text "Hoeveel sec wachten tot checken voor update?"); echo $Time001

wget -np -c "$Site001" --output-document /tmp/old.html

zenity --info --text "Wait till this gives you a message that your forum/website is updated!"

val=0;
while  [ $val -eq 0 ]  ;  do

sleep "$Time001"

wget -np -c "$site" --output-document /tmp/new.html

bestand1=/tmp/old.html
besatnd2=/tmp/new.html

cmp $bestand1 $bestand2 &> /dev/null
val=$?
done

zenity --info --text "Updated!"

Maarrr, hoe laat je dat verschil van minstens 50 tekens aangeven?

Het is vooral leuk om te proberen, ik ben pas, nou, drie maanden volledig overgestapt op Ubuntu, dus ik vond het wel leuk om hieraan te helpen,
De andere zijn allemaal bovenbouwers... Ik ben de enige onderbouwer die Ubuntu gebruikt, van de 300 onderbouwers op mijn school :o
Maar scripten is toch een stuk moeilijker dan ik had gedacht...
Zelfs Grieks is véél makkelijker dan bash-scripten (alleen Grieks is niet zo logisch als scripten, ik doe gymnasium, 2e klas)... XD
« Laatst bewerkt op: 2011/11/09, 23:04:38 door brickmasterj »
Workstation:
Dell Precision 690 Workstation
Dual Xeon X5365 Quad (8-Cores @3.0GHz)
64GB DDR2 R.A.M.
Sapphire Radeon HD 6570 (2GB GDDR3)

PC:
Dell OptiPlex 755
Intel Core 2 Duo E8400 (2-Cores @3,00Ghz)
4GB DDR2 R.A.M.
ATi Radeon HD 2400 XT (258MB GDDR2)

IGN: brickmasterj (of brickmaster-j)

Re: Script voor vergelijken van inhoud van bestanden
« Reactie #27 Gepost op: 2011/11/10, 00:01:07 »
Ik gok dat dat best lastig wordt... je zou iets met levenshtein distance tussen strings kunnen doen, maar ik gok dat bash dat niet kan. Er zijn vast wel tooltjes voor te vinden. Makkelijker is om het in php te doen, dan is er gewoon een functie voor. Talen als python vast ook wel.

Als aantal regels ook goed genoeg is zou je naar diff kunnen kijken en dan alle regels die met < of > beginnen tellen.. zoiets
diff file1 file2 | grep "^[><]" | wc -l
URD - http://www.urdland.com - Usenet Resource Downloader

Re: Script voor vergelijken van inhoud van bestanden
« Reactie #28 Gepost op: 2011/11/12, 16:44:18 »
Ik gok dat dat best lastig wordt... je zou iets met levenshtein distance tussen strings kunnen doen, maar ik gok dat bash dat niet kan. Er zijn vast wel tooltjes voor te vinden. Makkelijker is om het in php te doen, dan is er gewoon een functie voor. Talen als python vast ook wel.

Als aantal regels ook goed genoeg is zou je naar diff kunnen kijken en dan alle regels die met < of > beginnen tellen.. zoiets
diff file1 file2 | grep "^[><]" | wc -l
Ok da's mooi, maar hoe dan met gewoon het aantal regels? gewoon: diff file1 file2 | grep | wc -l ofzo?
Word de loop dan zo:
val=0;
while  [ $val -eq 0 ]  ;  do

sleep "$Time001"

wget -np -c "$site" --output-document /tmp/new.html

bestand1=/tmp/old.html
besatnd2=/tmp/new.html

diff $bestand1 $bestand2 | grep "^[><]" | wc -l
val=$?
done
Maar dan 'diff $bestand1 $bestand2 | grep "^[><]" | wc -l' veranderd naar wat het moet zijn voor alleen het aantal regels te meten
« Laatst bewerkt op: 2011/11/12, 17:09:44 door brickmasterj »
Workstation:
Dell Precision 690 Workstation
Dual Xeon X5365 Quad (8-Cores @3.0GHz)
64GB DDR2 R.A.M.
Sapphire Radeon HD 6570 (2GB GDDR3)

PC:
Dell OptiPlex 755
Intel Core 2 Duo E8400 (2-Cores @3,00Ghz)
4GB DDR2 R.A.M.
ATi Radeon HD 2400 XT (258MB GDDR2)

IGN: brickmasterj (of brickmaster-j)

Re: Script voor vergelijken van inhoud van bestanden
« Reactie #29 Gepost op: 2011/11/12, 22:52:20 »
diff zet een < resp > voor de oude resp vervangende regel neer dus als je die telt...

val=`diff $bestand1 $bestand2 | grep "^>" | wc -l`
zou goed moeten gaan
URD - http://www.urdland.com - Usenet Resource Downloader

Re: Script voor vergelijken van inhoud van bestanden
« Reactie #30 Gepost op: 2011/11/13, 09:07:19 »
diff zet een < resp > voor de oude resp vervangende regel neer dus als je die telt...

val=`diff $bestand1 $bestand2 | grep "^>" | wc -l`
zou goed moeten gaan

Ok, dat werkt, alleen nu nog een minimum er in aangeven...?
Workstation:
Dell Precision 690 Workstation
Dual Xeon X5365 Quad (8-Cores @3.0GHz)
64GB DDR2 R.A.M.
Sapphire Radeon HD 6570 (2GB GDDR3)

PC:
Dell OptiPlex 755
Intel Core 2 Duo E8400 (2-Cores @3,00Ghz)
4GB DDR2 R.A.M.
ATi Radeon HD 2400 XT (258MB GDDR2)

IGN: brickmasterj (of brickmaster-j)

Re: Script voor vergelijken van inhoud van bestanden
« Reactie #31 Gepost op: 2011/11/13, 10:05:49 »
Brickmasterj,

Iets in de geest van:

val=0

while  [ $val -lt 50 ]
do
    ....
    val=`diff $bestand1 $bestand2 | grep "^>" | wc -l`
done

Als het goed is stopt maneer er 50 regels die veranderd geteld zijn.

MvG,
MauRice
Registered Linux user: 473556

Re: Script voor vergelijken van inhoud van bestanden
« Reactie #32 Gepost op: 2011/11/13, 10:41:26 »
Tnx, het enige probleem is nu, hij geeft ALTIJD dat er een verandering in zit, ook al zet je -lt 5000 ofzo...
Komt dat omdat hij HTML niet herkent ofzo? Dat je ook nog moet meegeven dat het HTML is? ???
Workstation:
Dell Precision 690 Workstation
Dual Xeon X5365 Quad (8-Cores @3.0GHz)
64GB DDR2 R.A.M.
Sapphire Radeon HD 6570 (2GB GDDR3)

PC:
Dell OptiPlex 755
Intel Core 2 Duo E8400 (2-Cores @3,00Ghz)
4GB DDR2 R.A.M.
ATi Radeon HD 2400 XT (258MB GDDR2)

IGN: brickmasterj (of brickmaster-j)

Re: Script voor vergelijken van inhoud van bestanden
« Reactie #33 Gepost op: 2011/11/13, 11:06:33 »
Brickmasterj,

Neen, html-code is text.
wget overschrijft niet de 'oude' bestand met de optie -c.
Haal je die weg en om een of andere reden wordt het downloaden onderbroken dan gaat het niet automatisch verder.
Je zal dus ergens is je script de bestanden moeten verwijderen.

Beknopte info over wget: wget --help

« Laatst bewerkt op: 2011/11/13, 11:24:29 door MauRice2 »
MvG,
MauRice
Registered Linux user: 473556

Re: Script voor vergelijken van inhoud van bestanden
« Reactie #34 Gepost op: 2011/11/13, 12:50:16 »
Dus gewoon rm gebruiken?
rm /tmp/new.html
wget -np -c "$site" --output-document /tmp/new.html
Workstation:
Dell Precision 690 Workstation
Dual Xeon X5365 Quad (8-Cores @3.0GHz)
64GB DDR2 R.A.M.
Sapphire Radeon HD 6570 (2GB GDDR3)

PC:
Dell OptiPlex 755
Intel Core 2 Duo E8400 (2-Cores @3,00Ghz)
4GB DDR2 R.A.M.
ATi Radeon HD 2400 XT (258MB GDDR2)

IGN: brickmasterj (of brickmaster-j)

Re: Script voor vergelijken van inhoud van bestanden
« Reactie #35 Gepost op: 2011/11/13, 19:15:54 »
Brickmasterj,

Als daar de juiste plaats is voor de goede werking va je script. Dus ja.
En op einde van het script beide html-bestanden verwijderen, zodat het niet tegenwerkt bij de volgende keer.

MvG,
MauRice
Registered Linux user: 473556

Re: Script voor vergelijken van inhoud van bestanden
« Reactie #36 Gepost op: 2011/11/13, 20:31:11 »
Brickmasterj,

Als daar de juiste plaats is voor de goede werking va je script. Dus ja.
En op einde van het script beide html-bestanden verwijderen, zodat het niet tegenwerkt bij de volgende keer.


Tnx! Het werkt perfect!
Maar goede tip om die bestanden dan te verwijderen!
Workstation:
Dell Precision 690 Workstation
Dual Xeon X5365 Quad (8-Cores @3.0GHz)
64GB DDR2 R.A.M.
Sapphire Radeon HD 6570 (2GB GDDR3)

PC:
Dell OptiPlex 755
Intel Core 2 Duo E8400 (2-Cores @3,00Ghz)
4GB DDR2 R.A.M.
ATi Radeon HD 2400 XT (258MB GDDR2)

IGN: brickmasterj (of brickmaster-j)

Re: Script voor vergelijken van inhoud van bestanden
« Reactie #37 Gepost op: 2011/11/13, 20:53:48 »
Brickmasterj,

Geen dank, graag gedaan.
Een kleine tip er bij met het verwijderen van de bestanden, de -f optie gebruiken (force), dus:
rm -f /tmp/new.html

Zie ook: rm --help
MvG,
MauRice
Registered Linux user: 473556

Re: Script voor vergelijken van inhoud van bestanden
« Reactie #38 Gepost op: 2011/11/13, 21:40:32 »
Brickmasterj,

Geen dank, graag gedaan.
Een kleine tip er bij met het verwijderen van de bestanden, de -f optie gebruiken (force), dus:
rm -f /tmp/new.html

Zie ook: rm --help
Ja, dat zag ik al, anders maakt ie alleen de file leeg.
Workstation:
Dell Precision 690 Workstation
Dual Xeon X5365 Quad (8-Cores @3.0GHz)
64GB DDR2 R.A.M.
Sapphire Radeon HD 6570 (2GB GDDR3)

PC:
Dell OptiPlex 755
Intel Core 2 Duo E8400 (2-Cores @3,00Ghz)
4GB DDR2 R.A.M.
ATi Radeon HD 2400 XT (258MB GDDR2)

IGN: brickmasterj (of brickmaster-j)