shell-script "wget" Error bei timeout

Post Reply
Message
Author
Becks

shell-script "wget" Error bei timeout

#1 Post by Becks »

Hi all!

Ich habe ein kleines shellscript dass via cronjob regelmäßig durchläuft.
in dem Script werden ganz simpel mit wget einige Seiten aufgerufen, die dann lokal gespeichert werden.
Sieht beispielsweise so aus (URL geändert):

Code: Select all

date=`date '+%F'`

#Homepage - Events today - workshops (NewsindexTeaser)
URL1="http://xxx.xxx.de/tools/export.py?fid=14&date=$date&days=1&event=conference&of=xml"
wget -O news1.xml "$URL1" 
Funktioniert auch klasse. Er überschreibt bei jedem Durchlauf die file. Allerdings kam es in letzter Zeit leider vor, dass der Server auf dem die Seite aufgerufen wird down war.

wget versucht es dann standard mäßig 20mal

Beispiel output:

Code: Select all

--11:10:11--  http://xxx.xxx.de/tools/export.py?fid=14&date=2007-03-21&days=365&event=conference&of=xml
  (try:12) => `news6.xml'
Connecting to xxx.xxx.de[xxx.xxx.5.58]:80... connected.
HTTP request sent, awaiting response...
Read error (Connection reset by peer) in headers.
Retrying.
Er bekommt 20x mal nen Read error und sagt dann "Giving up". Dann überschreibt er jedoch leider die file mit leerem Inhalt!

Ich suche eine unless-abfrage. Also irgendsowas am Anfang "unless output=ERROR"

so dass er das script nur durchläuft wenn der Server erreichbar ist. Wenn nicht soll er die files im alten Zustand lassen - besser alte Infos als gar keine ;)

Hoffe mir kann einer helfen!

Greeetz Basti

komsomolze
Posts: 430
Joined: 03. Mar 2006 23:16

#2 Post by komsomolze »

Hallo,

wenn Du die Option '-O news1.xml' weglässt, und stattdessen '-N (--timestamping)' benutzt?

Du könntest Dir auch mal das Skript update-pciids ansehen, da wird der Download in einen Test eingebunden:

Code: Select all

...
	DL="wget -O $DEST.new $SRC"
...
if ! $DL ; then
	echo >&2 "update-pciids: download failed"
	rm -f $DEST.new
	exit 1
fi
...
mfg komsomolze

Becks

#3 Post by Becks »

Habe es nun wie folgt gelöst:

Code: Select all

#!/bin/sh

cd /afs/...

date=`date '+%F'`

#Connection check
URL_check="http://xxx.xxx.de/tools/export.py?fid=14&date=$date&days=1&event=conference&of=xml"
wget -t 1 -O check.xml "$URL_check" -o check.log


#Ausführen nur wenn kein 'ERROR' oder 'Giving up' in check.log gefunden wird
err=`grep -i 'Giving up' check.log | wc -l`
err2=`grep -i ERROR check.log | wc -l`


if [ $err == 0 ] && [ $err2 == 0 ]; then

	#Homepage - Events today - workshops (NewsindexTeaser)
	URL1="http://xxx.xxx.de/tools/export.py?fid=14&date=$date&days=1&event=conference&of=xml"
	wget -O news1.xml "$URL1"

	#Homepage - Events today - seminars (NewsindexTeaser)
	URL2="http://xxx.xxx.de/tools/export.py?fid=14&date=$date&days=1&event=simple_event&of=xml"
	wget -O news2.xml "$URL2"

	#Homepage - Upcoming Seminars (NewsindexTeaser2)
	URL3="http://xxx.xxx.de/tools/export.py?fid=14&date=$date&days=12&event=simple_event&of=xml"
	wget -O news3.xml "$URL3"

....

fi

Post Reply