Hier ein Script-Set um Updates für die Jameica Plattform weitestgehend zu automatisieren:
- Ermittelt die installlierte Version
- Sichert eventuell vorhandene Plugins im Programm-Verzeichnis und spielt diese nach dem Update zurück
- Sichert eventuell vorhandene Dateien im cfg Verzeichnis des Programm-Verzeichnis und spielt diese nach dem Update zurück
- Legt ein komplettes Backup des Programm-Verzeichnis an
- Mit den Parametern -nightly und -stable kann man zwischen Stable und Nightly wechseln bzw. forcieren
- Für Stable Version mit SHA Check nach Download
Aufruf: jameica_updatecheck.sh
#!/bin/bash
# Semi-Automatische Updates für Jameica
#
# (c) 2015 Christian B. Caldarone
#
# www.xing.com/profile/ChristianB_Caldarone
#
# GPL V2 only
link=$(readlink -f "$0")
dir=$(dirname "$link")
cd "$dir"
jameica_home="/opt/jameica"
jameica="0.0.0"
echo
echo " Überprüfen ob Jameica auf diesem System installiert ist und wenn ja, in welcher Version..."
echo
if [[ -e $HOME/.jameica/cfg/de.willuhn.jameica.plugin.PluginLoader.properties ]]; then
eval $(cat $HOME/.jameica/cfg/de.willuhn.jameica.plugin.PluginLoader.properties | grep jameica=)
fi
if [[ $* == *"-nightly"* ]]; then
jameica="0.0.0-nightly"
fi
if [[ $* == *"-stable"* ]]; then
jameica="0.0.0"
fi
if [ -d $jameica_home ]; then
if [[ $(ls -A $jameica_home) ]] && [[ ! -e $HOME/.jameica/cfg/de.willuhn.jameica.plugin.PluginLoader.properties ]]; then
echo " Jameica wurde unter diesem Benutzer noch nicht gestartet, ist aber grundsätzlich auf diesem System installiert."
echo " Bitte ggf. Jameica mit diesem Benutzer einmal ausführen, dann dieses Script noch einmal starten."
fi
if [[ ! $(ls -A $jameica_home) ]]; then
echo " Das Jameica Programm-Verzeichnis existiert, ist aber leer."
echo " Die Anzeige der Version bezieht sich auf die vorherige Installation:"
echo
fi
else
echo " Jameica ist auf diesem System noch nicht installiert, oder befindet"
echo " sich nicht im Standardverzeichnis $jameica_home"
echo
fi
if [[ $jameica == *"nightly"* ]]; then
jameica_new=$(curl --silent --get http://www.willuhn.de/products/jameica/download_ext.php | grep 'nightly-linux.zip' | sed -e 's/.*jameica-\(.*\)-linux.*/\1/')
nightly=1
else
jameica_new=$(curl --silent --get http://www.willuhn.de/products/jameica/download.php | grep '<h2>Jameica' | sed -e 's/.*Jameica \(.*\) - Aktuelle Version.*/\1/')
nightly=0
fi
if [[ $jameica < $jameica_new ]] || [[ $nightly -gt 0 ]]; then
if [[ -e $jameica_home/jameica.jar ]] && [[ $nightly -gt 0 ]]; then
if [[ $(date -r "$jameica_home/jameica.jar" +%Y-%m-%d) < $(date +%Y-%m-%d) ]]; then
echo " Installierte Jameica Nightly Version: $jameica vom "$(date -r "$jameica_home/jameica.jar" +%d.%m.%Y)
fi
else
echo " Installierte Jameica Version: $jameica"
fi
echo
echo " ==> Es ist eine neueres Jameica in der Version $jameica_new verfügbar!"
echo
echo " Jameica kann jetzt automatisch aktualisiert werden!"
do_update=1
else
if [[ -e "$jameica_home/jameica.jar" ]]; then
echo " Installierte Jameica Version ist aktuell: $jameica vom "$(date -r "$jameica_home/jameica.jar" +%d.%m.%Y)
echo
echo " ==> Es ist keine neuere Version vorhanden!"
do_update=0
else
echo " Neuste Version $jameica_new kann in $jameica_home installiert werden!"
do_update=1
fi
fi
if [ $do_update -gt 0 ]; then
echo
echo " Ein Backup der aktuellen Installation wird hierbei unter $jameica_home.old gespeichert,"
echo " und wird erst bei der nächsten Aktualisierung wieder überschrieben."
echo " Wurden Plugins im Anwendungsordner $jameica_home/plugins gespechert, so werden diese in"
echo " die neue Installation übertragen. Das gilt auch für das $jameica_home/cfg Verzeichnis,"
echo " falls hier Dateien vorhanden sind."
echo
read -r -p " Soll Jameica jetzt automatisch aktualisiert werden? [J/N]: " abfrage
case $abfrage in
[jJ]|[yY])
echo
echo " Starte Update bzw. Installation...."
echo -n " Root-"
su -c "./update_jameica.sh $jameica_new"
;;
*)
echo
echo " Beenden ohne Aktualisierung."
;;
esac
fi
exit
Der Updater selbst (wird vom ersten Script aufgerufen):
#!/bin/bash
# Semi-Automatische Updates für Jameica
#
# (c) 2015 Christian B. Caldarone
#
# www.xing.com/profile/ChristianB_Caldarone
#
# GPL V2 only
if [[ $* == "" ]]; then
echo " Kein Parameter angegeben."
echo " Abbruch"
echo
echo " Das Update Script ist für den Aufruf"
echo " durch 'Jameica_updatecheck.sh' vorgesehen"
exit 0
fi
link=$(readlink -f "$0")
dir=$(dirname "$link")
cd "$dir"
jameica_location="/opt"
jameica_home=$jameica_location"/jameica"
download_file="jameica-linux"
if [[ ! -w $jameica_location ]]; then
echo " Keine Schreibrechte in $jameica_location."
echo " Abbruch."
exit 1
fi
inst_tmp=$(mktemp -d --tmpdir jameica.XXXXXXXX) || { echo "Fehler beim anlegen des Temp-Dir."; exit 1; }
if [[ $* == *"nightly"* ]]; then
download_file="jameica-$1-linux"
else
download_file="jameica-linux"
fi
if [[ $(uname -m | grep 64) ]]; then
download_file="$download_file"64.zip
else
download_file="$download_file".zip
fi
echo " Ermittle Download-Datei: $download_file"
if [[ $* == *"nightly"* ]]; then
nightly=1
download_url="http://www.willuhn.de/products/jameica/releases/nightly/"
wget -q -P $inst_tmp/ $download_url$download_file
else
nightly=0
download_url="http://www.willuhn.de/products/jameica/releases/current/jameica/"
wget -q -P $inst_tmp/ $download_url$download_file
wget -q -P $inst_tmp/ $download_url$download_file.SHA
file_sha=$(sha1sum -b $inst_tmp/$download_file | sed -r 's/(.{40}).*/\1/')
test_sha=$(cat $inst_tmp/$download_file.SHA | sed -r 's/(.{40}).*/\1/')
if [[ "$file_sha" == "$test_sha" ]]; then
echo " Checksumme stimmt überein, Download erfolgreich."
else
echo " Checksumme stimmt nicht, Download fehlerhaft."
echo " Abbruch!"
exit 1
fi
fi
echo " Erstelle Backup..."
mkdir $inst_tmp/backup
if [[ -d $jameica_home/plugins ]]; then
if [[ $(ls -A $jameica_home/plugins) ]]; then
cp -fpR $jameica_home/plugins $inst_tmp/backup
echo " $jameica_home/plugins gesichert"
fi
fi
if [ -d "$jameica_home/cfg" ]; then
if [[ $(ls -A $jameica_home/cfg) ]]; then
cp -fpR $jameica_home/cfg $inst_tmp/backup
echo " $jameica_home/cfg gesichert"
fi
fi
rm -rf $jameica_home".old"
if [[ -d $jameica_home ]]; then
echo " Aktuelle Installation nach $jameica_home.old gesichert"
mv -f $jameica_home $jameica_home".old"
fi
echo " Installiere neue Version in $jameica_home"
unzip -qu $inst_tmp/$download_file -d /opt
if [[ $(ls -A $inst_tmp/backup) ]]; then
cp -fpR $inst_tmp/backup/* $jameica_home
echo " Spiele plugin bzw cfg Daten zurück"
fi
rm -rf $inst_tmp
echo " Fertig."
exit
Die Scripte auch als Anhang. Außerhalb von /opt/jameica ausführen!
- Ermittelt die installlierte Version
- Sichert eventuell vorhandene Plugins im Programm-Verzeichnis und spielt diese nach dem Update zurück
- Sichert eventuell vorhandene Dateien im cfg Verzeichnis des Programm-Verzeichnis und spielt diese nach dem Update zurück
- Legt ein komplettes Backup des Programm-Verzeichnis an
- Mit den Parametern -nightly und -stable kann man zwischen Stable und Nightly wechseln bzw. forcieren
- Für Stable Version mit SHA Check nach Download
Aufruf: jameica_updatecheck.sh
Code
#!/bin/bash
# Semi-Automatische Updates für Jameica
#
# (c) 2015 Christian B. Caldarone
#
# www.xing.com/profile/ChristianB_Caldarone
#
# GPL V2 only
link=$(readlink -f "$0")
dir=$(dirname "$link")
cd "$dir"
jameica_home="/opt/jameica"
jameica="0.0.0"
echo
echo " Überprüfen ob Jameica auf diesem System installiert ist und wenn ja, in welcher Version..."
echo
if [[ -e $HOME/.jameica/cfg/de.willuhn.jameica.plugin.PluginLoader.properties ]]; then
eval $(cat $HOME/.jameica/cfg/de.willuhn.jameica.plugin.PluginLoader.properties | grep jameica=)
fi
if [[ $* == *"-nightly"* ]]; then
jameica="0.0.0-nightly"
fi
if [[ $* == *"-stable"* ]]; then
jameica="0.0.0"
fi
if [ -d $jameica_home ]; then
if [[ $(ls -A $jameica_home) ]] && [[ ! -e $HOME/.jameica/cfg/de.willuhn.jameica.plugin.PluginLoader.properties ]]; then
echo " Jameica wurde unter diesem Benutzer noch nicht gestartet, ist aber grundsätzlich auf diesem System installiert."
echo " Bitte ggf. Jameica mit diesem Benutzer einmal ausführen, dann dieses Script noch einmal starten."
fi
if [[ ! $(ls -A $jameica_home) ]]; then
echo " Das Jameica Programm-Verzeichnis existiert, ist aber leer."
echo " Die Anzeige der Version bezieht sich auf die vorherige Installation:"
echo
fi
else
echo " Jameica ist auf diesem System noch nicht installiert, oder befindet"
echo " sich nicht im Standardverzeichnis $jameica_home"
echo
fi
if [[ $jameica == *"nightly"* ]]; then
jameica_new=$(curl --silent --get http://www.willuhn.de/products/jameica/download_ext.php | grep 'nightly-linux.zip' | sed -e 's/.*jameica-\(.*\)-linux.*/\1/')
nightly=1
else
jameica_new=$(curl --silent --get http://www.willuhn.de/products/jameica/download.php | grep '<h2>Jameica' | sed -e 's/.*Jameica \(.*\) - Aktuelle Version.*/\1/')
nightly=0
fi
if [[ $jameica < $jameica_new ]] || [[ $nightly -gt 0 ]]; then
if [[ -e $jameica_home/jameica.jar ]] && [[ $nightly -gt 0 ]]; then
if [[ $(date -r "$jameica_home/jameica.jar" +%Y-%m-%d) < $(date +%Y-%m-%d) ]]; then
echo " Installierte Jameica Nightly Version: $jameica vom "$(date -r "$jameica_home/jameica.jar" +%d.%m.%Y)
fi
else
echo " Installierte Jameica Version: $jameica"
fi
echo
echo " ==> Es ist eine neueres Jameica in der Version $jameica_new verfügbar!"
echo
echo " Jameica kann jetzt automatisch aktualisiert werden!"
do_update=1
else
if [[ -e "$jameica_home/jameica.jar" ]]; then
echo " Installierte Jameica Version ist aktuell: $jameica vom "$(date -r "$jameica_home/jameica.jar" +%d.%m.%Y)
echo
echo " ==> Es ist keine neuere Version vorhanden!"
do_update=0
else
echo " Neuste Version $jameica_new kann in $jameica_home installiert werden!"
do_update=1
fi
fi
if [ $do_update -gt 0 ]; then
echo
echo " Ein Backup der aktuellen Installation wird hierbei unter $jameica_home.old gespeichert,"
echo " und wird erst bei der nächsten Aktualisierung wieder überschrieben."
echo " Wurden Plugins im Anwendungsordner $jameica_home/plugins gespechert, so werden diese in"
echo " die neue Installation übertragen. Das gilt auch für das $jameica_home/cfg Verzeichnis,"
echo " falls hier Dateien vorhanden sind."
echo
read -r -p " Soll Jameica jetzt automatisch aktualisiert werden? [J/N]: " abfrage
case $abfrage in
[jJ]|[yY])
echo
echo " Starte Update bzw. Installation...."
echo -n " Root-"
su -c "./update_jameica.sh $jameica_new"
;;
*)
echo
echo " Beenden ohne Aktualisierung."
;;
esac
fi
exit
Der Updater selbst (wird vom ersten Script aufgerufen):
Code
#!/bin/bash
# Semi-Automatische Updates für Jameica
#
# (c) 2015 Christian B. Caldarone
#
# www.xing.com/profile/ChristianB_Caldarone
#
# GPL V2 only
if [[ $* == "" ]]; then
echo " Kein Parameter angegeben."
echo " Abbruch"
echo
echo " Das Update Script ist für den Aufruf"
echo " durch 'Jameica_updatecheck.sh' vorgesehen"
exit 0
fi
link=$(readlink -f "$0")
dir=$(dirname "$link")
cd "$dir"
jameica_location="/opt"
jameica_home=$jameica_location"/jameica"
download_file="jameica-linux"
if [[ ! -w $jameica_location ]]; then
echo " Keine Schreibrechte in $jameica_location."
echo " Abbruch."
exit 1
fi
inst_tmp=$(mktemp -d --tmpdir jameica.XXXXXXXX) || { echo "Fehler beim anlegen des Temp-Dir."; exit 1; }
if [[ $* == *"nightly"* ]]; then
download_file="jameica-$1-linux"
else
download_file="jameica-linux"
fi
if [[ $(uname -m | grep 64) ]]; then
download_file="$download_file"64.zip
else
download_file="$download_file".zip
fi
echo " Ermittle Download-Datei: $download_file"
if [[ $* == *"nightly"* ]]; then
nightly=1
download_url="http://www.willuhn.de/products/jameica/releases/nightly/"
wget -q -P $inst_tmp/ $download_url$download_file
else
nightly=0
download_url="http://www.willuhn.de/products/jameica/releases/current/jameica/"
wget -q -P $inst_tmp/ $download_url$download_file
wget -q -P $inst_tmp/ $download_url$download_file.SHA
file_sha=$(sha1sum -b $inst_tmp/$download_file | sed -r 's/(.{40}).*/\1/')
test_sha=$(cat $inst_tmp/$download_file.SHA | sed -r 's/(.{40}).*/\1/')
if [[ "$file_sha" == "$test_sha" ]]; then
echo " Checksumme stimmt überein, Download erfolgreich."
else
echo " Checksumme stimmt nicht, Download fehlerhaft."
echo " Abbruch!"
exit 1
fi
fi
echo " Erstelle Backup..."
mkdir $inst_tmp/backup
if [[ -d $jameica_home/plugins ]]; then
if [[ $(ls -A $jameica_home/plugins) ]]; then
cp -fpR $jameica_home/plugins $inst_tmp/backup
echo " $jameica_home/plugins gesichert"
fi
fi
if [ -d "$jameica_home/cfg" ]; then
if [[ $(ls -A $jameica_home/cfg) ]]; then
cp -fpR $jameica_home/cfg $inst_tmp/backup
echo " $jameica_home/cfg gesichert"
fi
fi
rm -rf $jameica_home".old"
if [[ -d $jameica_home ]]; then
echo " Aktuelle Installation nach $jameica_home.old gesichert"
mv -f $jameica_home $jameica_home".old"
fi
echo " Installiere neue Version in $jameica_home"
unzip -qu $inst_tmp/$download_file -d /opt
if [[ $(ls -A $inst_tmp/backup) ]]; then
cp -fpR $inst_tmp/backup/* $jameica_home
echo " Spiele plugin bzw cfg Daten zurück"
fi
rm -rf $inst_tmp
echo " Fertig."
exit
Die Scripte auch als Anhang. Außerhalb von /opt/jameica ausführen!
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.