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.
)... hätte sonst sogar gesagt, dass alles kompakt zusammen in eine Datei rein kann?