Passend zu dem obigen Proxytestskript hier das passende Leechskript. Es nimmt als Input eine Reihe von URLs, und als erster Parameter eine Datei mit einer Liste von Proxies, und verteilt das Leechen der URLs auf die Proxies. Kommt ein 404, legt es eine leere Datei im Verzeichnis 404/ an, um zu kennzeichnen, das dort nichts zu holen ist. Das Skript selber ist so ein hässliches Bash-chaos, aber sowas habe ich schon lange gebraucht, und ich denke, es geht einigen Leuten so. Zusätzlich kann man auf der Kommandozeile noch weitere Flags angeben, die an wget weitergereicht werden.
#!/bin/sh
PROXYFILE=$1
shift
WGETARGS=$*
if [ -z "$WGETARGS" ]; then
WGETARGS="-nc"
fi
if [ ! -f "$PROXYFILE" ]; then
echo "Usage: ./leech.sh proxyfile &1`
if [ ! $? -eq 0 ]; then
echo "Could not leech $FILE over $proxy"
FILENAME=`basename "$FILE"`
echo "$OUTPUT" | grep 404 >/dev/null && touch "404/$FILENAME"
else
echo "Leeched $FILE over $proxy"
fi
sleep 1;
done) &
START=$((START + PERPROXY))
done
wait
Bitte beachtet das für jedes Proxy in der Proxydatei ein neuer Bashprozess geforkt wird, der selber ein Wget forken wird. Unter den meisten Unixen wirds dann schnell eng (Unix ist ja so wunderbar…).