Programm welches Files/URL's auf Änderung überprüft

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Benutzeravatar
zyta2k
Beiträge: 2446
Registriert: 14.03.2003 09:18:00
Kontaktdaten:

Programm welches Files/URL's auf Änderung überprüft

Beitrag von zyta2k » 18.02.2004 22:17:11

Brauche eine Software, welche eine von mir erstellte Liste von Files/Webpages überprüft und meldet, wenn diese sich geändert haben.

Kennt einer sowas ?

Schön wär natürlich was auf X basiert.

Ansonsten code ich selber was (evt. in BASH ;))

Benutzeravatar
abi
Beiträge: 2218
Registriert: 20.12.2001 19:42:56
Wohnort: München
Kontaktdaten:

Beitrag von abi » 18.02.2004 22:42:04

websec - Web Secretary - Web page monitoring software
Description: Web Secretary - Web page monitoring software
A visual Web page monitoring software. However, it goes
beyond the normal functionalities offered by such software. Not only
does it detect changes based on content analysis (instead of date/time
stamp or simple textual comparison), it will email the changed page to
you WITH THE NEW CONTENT HIGHLIGHTED!
evtl ist das was für dich.

Benutzeravatar
zyta2k
Beiträge: 2446
Registriert: 14.03.2003 09:18:00
Kontaktdaten:

Beitrag von zyta2k » 18.02.2004 23:01:37

OOOOh :)

Ja sieht in etwa nett aus ;)

Schön wär natürlich ein kicker-applet *Gg*

Benutzeravatar
zyta2k
Beiträge: 2446
Registriert: 14.03.2003 09:18:00
Kontaktdaten:

Beitrag von zyta2k » 18.02.2004 23:07:11

Naja :( *enttäuscht*

Eigentlch nicht das was ich suche.
Will kein Mail mit ner Homepage.

Aber wenigstens fast das richtige ;)

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 19.02.2004 13:15:05

Ich hab mal n entsprechendes Bash-Script geschrieben, nachdem mir auf eine gleiche Frage hier im Forum kein entsprechendes Prog genannt wurde. Habs auch gepostet.

Wenn ich @home bin (dauert noch) und dran denke Poste ich das Script hier sonst noch mal.

MfG Peschmä

Benutzeravatar
zyta2k
Beiträge: 2446
Registriert: 14.03.2003 09:18:00
Kontaktdaten:

Beitrag von zyta2k » 19.02.2004 13:22:18

peschmae hat geschrieben:Ich hab mal n entsprechendes Bash-Script geschrieben, nachdem mir auf eine gleiche Frage hier im Forum kein entsprechendes Prog genannt wurde. Habs auch gepostet.
Wenn ich @home bin (dauert noch) und dran denke Poste ich das Script hier sonst noch mal.
MfG Peschmä
Fein :)

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 21.02.2004 00:42:51

So, ich bin da und hab dran gedacht. :)

Das Script:

Code: Alles auswählen

#!/bin/bash

#
#    Copyright (C) 2004 by Simon Rutishauser <simon.rutishauser@gmx.ch
#
#    This program is free software; you can redistribute it and#or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or     
#    (at your option) any later version.                                   
#
#    This program is distributed in the hope that it will be useful,       
#    but WITHOUT ANY WARRANTY; without even the implied warranty of        
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         
#    GNU General Public License for more details.                          
#
#    You should have received a copy of the GNU General Public License     
#    along with this program; if not, write to the                         
#    Free Software Foundation, Inc.,                                       
#    59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             
#

DIR=~/.urlwatch
LOG=$DIR/log.txt
SUMFILE=$DIR/md5sums.txt
NUMBACKUPS=5

mkdir -p $DIR
rm -f $LOG
touch $SUMFILE

help() {
	echo -e "\nWelcome to urlwatch\n"
	echo -e "urlwatch accepts the following parameters:\n"
	echo -e "add [URL1] [URL2] [URLn]     Adds the URLs to the list of URLs to check"
	echo -e "remove [URL1] [URL2] [URLn]  Removes the URLs from the URL-List. Also works if"
	echo -e "                             only parts of the URL were specified. But if you -"
	echo -e "                             per example pass "com" as URL, all .com URLs are"
	echo -e "                             removed. So be careful"
	echo -e "check [URL1] [URL2] [URLn]   Tests if the passed URL has changed. If no URL is"
	echo -e "                             passed, all URLs are checked"
	echo -e "search [URL]                 Searches for the URL in the URL-List and in its" 
	echo -e "                             backups"
}

fetchSum() {
	MD5SUM=$(wget -O /dev/stdout $1 2>>$LOG | md5sum | sed s/-//)
	if [ $MD5SUM = "d41d8cd98f00b204e9800998ecf8427e" ] ; then
		echo -e "\n\nHello, please stop submitting invalid or unreachable urls like\n	$1"
		ping -c 1 $1
		exit 1
	fi
}

addSum() {
	shift # $1 is/was "add"
	until [ -z "$1" ] ; do
		echo -n adding $1...
		
		if grep -q $1 $SUMFILE  ; then
			echo -n " was already there "
		else
			fetchSum $1
			echo "$MD5SUM	$1" >> $SUMFILE
		fi

		echo done
		shift	
	done
}

removeSum() {
	backupShift
	shift
	until [ -z "$1" ] ; do
		echo -n removing $1...

		grep -v $1 $SUMFILE > $SUMFILE.tmp
		mv -f $SUMFILE.tmp $SUMFILE

		echo done
		shift
	done
}

backupShift() {
	rm -f $SUMFILE.$NUMBACKUPS
	
	for ((i=$NUMBACKUPS; i > 0; i--)); do
		cp -f $SUMFILE.$i $SUMFILE.$(expr $i - 1) 2>>$LOG >>$LOG
	done
	
	cp -f $SUMFILE $SUMFILE.1
}

checkSum() {
	shift
	until [ -z "$1" ] ; do
		echo -n checking $1...
			
		OLDSUM=$(grep $1 $SUMFILE | head -c 32)
		fetchSum $1
			
		if [ $MD5SUM != $OLDSUM ] ; then
			alert $1 $OLDSUM $MD5SUM
		fi
						
		echo done
		shift
	done
}

checkAll() {
	echo "checking all files..."
	
	for f in $(sed -r "s/.{34}	//g" $SUMFILE); do
		checkSum check $f #check 'cause of shift afterwards
	done
	
	echo done
}

alert() {
	echo -n " ** Website $1 has changed ** "
	galeon --new-tab $1 &
	
	sed -i s/$2/$3/g $SUMFILE
}

search() {
	echo "	"$SUMFILE:
	grep $2 $SUMFILE
	for ((i=1; i <= $NUMBACKUPS; i++)); do
		echo "	"$SUMFILE.$i:
		if [ -e $SUMFILE.$i ]; then
			grep $2 $SUMFILE.$i
		fi
	done
}

if   [ -z $1 ] ; then 
	checkAll
elif [ $1 = "add"      -o $1 = "--add"  -o $1 = "-a" ] ; then
	addSum $*
elif [ $1 = "remove" -o $1 = "--remove" -o $1 = "-r" ] ; then
	removeSum $*
elif [ $1 = "check"  -o $1 = "--check"  -o $1 = "-c" ] ; then
	if [ -z $2 ] ; then
		checkAll
	else
		checkSum $*
	fi
elif [ $1 = "search" -o $1 = "--search" -o $1 = "-s" ] ; then
	search $*
else
	help
fi
Download - lösch ich vielleicht mal wieder vom Server, deshalb hab ich das Script auch sonst gepostet :wink:

Zu beachten ist folgendes:
- Der Browseraufruf/alternative Benachrichtigungsmöglichkeit(en) müssen entsprechend konfiguriert werden. Hier öffnet Galeon einen neuen Tab (bzw startet erst mal)
- der Remove-Parameter ist recht allgemein - alle URLs die den übergebenen Suchstring enthalten werden entfernt, bei "urlwatch remove de" also alle .de-Urls
- Verbesserungen bitte mir schicken. :)

Ist zwar nicht wie gewünscht X-Basiert aber man kanns gut mit dem Browseraufruf verknüpfen so dass jeweils bei Browserstart gleich auch die URLs gecheckt werden.

MfG Peschmä[/url]
Zuletzt geändert von peschmae am 23.02.2004 13:23:15, insgesamt 2-mal geändert.

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 22.02.2004 20:52:28

Ist zwar nur ein kleines Detail, aber welche Lizenz soll das haben? Wenn da nichts steht greift das normale Copyright, und das sagt: keine Weitergabe, keine Modifikation ohne schriftl. Erlaubnis des Urhebers...

Patrick (in der Hinsicht etwas paranoid)
Definitely not a bot...
Jabber: pdreker@debianforum.de

Benutzeravatar
zyta2k
Beiträge: 2446
Registriert: 14.03.2003 09:18:00
Kontaktdaten:

Beitrag von zyta2k » 23.02.2004 08:54:17

Ja.

Mach mal nen GPL Header oben rein ;)

Code: Alles auswählen

INFILE=~/yourscript; OUTFILE=/tmp/yourGPLedScript; head -n 7 /usr/share/common-licenses/GPL-2 | sed 's/^[\t \W]*/# /g' > $OUTFILE && echo >> $OUTFILE && cat $INFILE >> $OUTFILE
/usr/share/common-licenses/GPL-2 ist zwar nicht ideal, aber besser als nichts und dazu einfach zu includen.

*hrm*. dachte es gäbe ein tool, dass automatisch einen GPL-Header einfügt.
Finde es aber im Mom nicht :?

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 23.02.2004 13:25:39

So. Gemacht.

@zyta2k: Das header das in Gpl-Programmen/Scripts jeweils steht ist aber nicht der Anfang der GPL. Das steht erst am Ende.

MfG Peschmä

Benutzeravatar
zyta2k
Beiträge: 2446
Registriert: 14.03.2003 09:18:00
Kontaktdaten:

Beitrag von zyta2k » 23.02.2004 13:43:08

peschmae hat geschrieben:So. Gemacht.

@zyta2k: Das header das in Gpl-Programmen/Scripts jeweils steht ist aber nicht der Anfang der GPL. Das steht erst am Ende.

MfG Peschmä
Oha...

Code: Alles auswählen

INFILE=~/yourscript; OUTFILE=/tmp/yourGPLedScript; tail -n 48 /usr/share/common-licenses/GPL-2 | head -n 13 | sed 's/^[\w \t]*/# /' > $OUTFILE && echo >> $OUTFILE && cat $INFILE >> $OUTFILE

Benutzeravatar
zyta2k
Beiträge: 2446
Registriert: 14.03.2003 09:18:00
Kontaktdaten:

Beitrag von zyta2k » 23.02.2004 14:11:00

Was für ins .bashrc

Code: Alles auswählen

# Some Functions
gplstamp() {
if [ -n "$1" ]
then
    echo "Füge GPL-2 Header zu $1 hinzu..."
    echo "Oberste Zeile nicht vergessen ;)"
    INFILE="$1"
    TMPFILE="/tmp/tmpGPLscript"
    YEAR=`date '+%Y'`
    sed -e "s/<year>/$YEAR/" -e "s/name of author/$EMAIL/" \
      /usr/share/common-licenses/GPL-2 | tail -n 48 | \
      head -n 13 | sed 's/^[\w \t]*/#/' > $TMPFILE
    echo >> $TMPFILE
    cat $INFILE >> $TMPFILE
    cp $TMPFILE $INFILE
    rm $TMPFILE
else
    echo "Keine Datei zum GPL-stampen angegeben. !"
    echo "Syntax: gplstamp FILE"
    echo ""
fi
}

Antworten