Mal wieder ein kleines, nützliches Skript, um bei den Updates für Firefox und Thunderbird auf Windows Schritt zu halten. Das ist sehr praktisch, wenn man ein eigenes kleines Netzwerk verwalten muss und nicht jeder PC einzeln die Updates runterladen soll.
Das Skript verlässt sich auf die Symlinks "latest" bzw. "latest-esr" auf dem Downloadserver. Die sind leider nicht so spontan aktuell, aber doch durchaus noch im vertretbaren Rahmen. Wenn man eine ganz bestimmte Version haben will oder die Symlinks doch länger nicht aktuell sind, kann man auch auf der Kommandozeile die gewünschte Versionsnummer direkt angeben (z.B. "19.0.42" oder "17.0.5esr"). Erste Angabe ist für Firefox, zweite Angabe für Thunderbird.
Beispiel von Aufrufen mit "verbose"-Option:
get-mozilla.sh -v 20.0.1 17.0.5
get-mozilla.sh -ve 17.0.5esr 17.0.5esr
Das Skript besorgt sich mit "lynx -dump" für die gewünschte Version ("release" bzw. "esr", "de" bzw. "en") die Download-Seite bei einem der gespiegelten Mozilla-Server im Klartext, sucht sich aus dem Anhang der Seite die Downloadlinks heraus, und lädt dann die neuen Versionen herunter, sofern sie nicht schon lokal vorhanden sind. Es wird also nix doppelt runtergeladen. Wer kein rsync verwendet, kann den letzten "if"-Befehl im Skript entfernen, das kopiert die heruntergeladenen Dateien auf einen anderen Server.
Da die ESR-Versionen (Extended Support Release, d.h. nur Sicherheitsupdates, keine neuen Features für den Support-Zeitraum) nicht überall gespiegelt werden, gibt es einen expliziten Server, von dem diese "Enterprise"-Versionen geholt werden.
Wenn man also die "normalen" rapid-release und die ESR-Versionen benötigt, muss man das Skript 2x aufrufen, einmal mit "-e", einmal ohne diesen Switch. Danach hat man vier Dateien pro Variante, TB und FF jeweils in deutsch und englisch. Wer weniger oder andere Sprachen haben will, muss das Skript entsprechend anpassen.
Gesteuert wird das Skript über einige Switches:
- -e ESR-Version herunterladen
- -v verbose
- -s nur Anzeigen, nix herunterladen
- -S rsync zum Kopieren auf einen anderen Server
#!/bin/sh
# ftp.mozilla.org
# /pub/mozilla.org/firefox/releases/17.0esr/win32/en-US
# /pub/mozilla.org/firefox/releases/17.0esr/win32/de
# Firefox Setup 17.0.2esr.exe
# /pub/mozilla.org/thunderbird/releases/17.0esr/win32/de/
# /pub/mozilla.org/thunderbird/releases/17.0esr/win32/en-US/
# Thunderbird Setup 17.0.2esr.exe
# https://download-installer.cdn.mozilla.net/pub/mozilla.org/
latestff=latest
latesttb=latest
esrff=latest-esr
esrtb=latest-esr
show=0
sync=0
verbose=-q
url=http://download-installer.cdn.mozilla.net/pub/mozilla.org
mirror=ftp.mozilla.org/pub/mozilla.org
while getopts "esSv" opt
do
case "$opt" in
S) sync=1;;
s) show=1;;
v) verbose=-v;;
e) latestff=$esrff
latesttb=$esrtb
url=$mirror
;;
esac
done
shift $(expr $OPTIND - 1)
PATH=/opt/bin${PATH:+:$PATH}
ff=$url/firefox/releases/%s/win32
tb=$url/thunderbird/releases/%s/win32
ffde=$ff/de
ffen=$ff/en-US
tbde=$tb/de
tben=$tb/en-US
mail=0
msg() { echo "$*" 1>&2; }
error() { msg "$*"; exit 1; }
download() {
ver=${4}
u=$(printf "$1" $ver)
name=$(lynx -dump $u | awk '/\.exe$/{sub(/.*\//,"",$2);print$2;exit;}')
ver=${name%.exe}
ver=${ver#*Setup%20}
fn=$2-$ver-$3.exe
if [ $show -eq 1 ]
then
echo "$u"
lynx -dump $u | awk '/\.exe$/{sub(/.*\//,"",$2);print$2;exit;}'
echo "$fn"
else
if [ -f "$fn" ]
then
echo found $2 $ver $3
else
echo downloading $2 $ver $3
wget $verbose $u/$name -O "$fn"
if [ -s "$fn" ]
then
mail=1
else
rm "$fn"
fi
fi
fi
}
cd /install/mozilla
download "$ffde" firefox de ${1:-$latestff}
download "$ffen" firefox en ${1:-$latestff}
shift
download "$tbde" thunderbird de ${1:-$latesttb}
download "$tben" thunderbird en ${1:-$latesttb}
if [ "$mail" -eq 1 ]
then
echo send mail ...
ls -1rt | \
grep -i '\.exe' | \
/bin/mail -s "New Mozilla software (FF $latestff) (TB $latesttb)" ths
fi
if [ "$sync" -eq 1 ]
then
echo sync to nas ...
rsync -v -e /opt/bin/ssh *.exe root@nas:/mnt/nas1/install/mozilla
fi
Keine Kommentare:
Kommentar veröffentlichen