Version 0.6
This commit is contained in:
commit
20497c502d
222
calibre-autoupdate
Executable file
222
calibre-autoupdate
Executable file
@ -0,0 +1,222 @@
|
||||
#!/bin/bash
|
||||
# Calibre Auto Updater - The Skript automatically updates your Calibre (http://calibre-ebook.com/)
|
||||
# Installation
|
||||
# Copyright (C) 2014 Leon Gaultier
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
#
|
||||
|
||||
scriptVersion=0.6
|
||||
|
||||
|
||||
|
||||
####################################
|
||||
####################################
|
||||
#
|
||||
# Versionsverlauf
|
||||
#
|
||||
# V0.1 Body des Skriptes erstellt
|
||||
# Abfrage neuste Version vorhanden
|
||||
# Abfrage welche Version installiert
|
||||
# Funktion Versionsvergleich
|
||||
# Download und installation der neusten Version
|
||||
# Desktopmeldungen hinzugefügt
|
||||
#
|
||||
# V0.2 Verbesserungen bei den Desktopmeldungen
|
||||
#
|
||||
# V0.3 Funktion Check Verfügbarkeit der Downloadseiten hinzugefügt
|
||||
#
|
||||
# V0.4 Check Verfügbarkeit auf Test Netzwerk vorhanden und Auswertung erweitert
|
||||
# diverse Kommentare hinzugefügt
|
||||
#
|
||||
# V0.5 Funktion Check läuft noch eine Calibre Instanz mit Counter
|
||||
# Ausgabe Texte verbessert und erweitert
|
||||
# URL Statuscodes holen ins main verlagert. !TODO Soll eigene Funktion werden
|
||||
#
|
||||
# V0.6 Verbesserungen in der Terminalausgabe, Startausgabe ist eine eigene Funktion
|
||||
# URL Status Code ist nun eine eigene Funktion
|
||||
#
|
||||
# TODO auslesen der Download URL von der Download Seite
|
||||
# kontrolle ob alle benötigten programme für das skript vorhanden sind
|
||||
#
|
||||
#
|
||||
######################################
|
||||
######################################
|
||||
|
||||
|
||||
|
||||
#################################
|
||||
######### CONFIGURATION #########
|
||||
# Diese Version funktioniert für alle Linuxsysteme nur so lange
|
||||
# bis Veränderungen auf der Internetseite durchgeführt wurden
|
||||
#################################
|
||||
|
||||
# Die Download Seiten URL.
|
||||
export CALIBRE_DOWNLOAD_PAGE=http://calibre-ebook.com/download_linux
|
||||
# The location of the installed application.
|
||||
export CALIBRE_INSTALL_LOCATION=/opt
|
||||
# The download URL
|
||||
DOWNLOAD_URL=https://github.com/kovidgoyal/calibre/raw/master/setup/linux-installer.py
|
||||
|
||||
############################
|
||||
# Variablen für den Verfügbarkeitscheck
|
||||
CHECK_CALIBRE_DOWNLOAD_PAGE=http://calibre-ebook.com
|
||||
CHECK_DOWNLOAD_URL=https://github.com
|
||||
|
||||
#################################
|
||||
##### Zusätzliche Funktionen #####
|
||||
|
||||
funct_vercomp () { # Funktion zum Versionsvergleich
|
||||
if [[ $1 == $2 ]]
|
||||
then
|
||||
return 0
|
||||
fi
|
||||
local IFS=.
|
||||
local i ver1=($1) ver2=($2)
|
||||
# fill empty fields in ver1 with zeros
|
||||
for ((i=${#ver1[@]}; i<${#ver2[@]}; i++))
|
||||
do
|
||||
ver1[i]=0
|
||||
done
|
||||
for ((i=0; i<${#ver1[@]}; i++))
|
||||
do
|
||||
if [[ -z ${ver2[i]} ]]
|
||||
then
|
||||
# fill empty fields in ver2 with zeros
|
||||
ver2[i]=0
|
||||
fi
|
||||
if ((10#${ver1[i]} > 10#${ver2[i]}))
|
||||
then
|
||||
return 1
|
||||
fi
|
||||
if ((10#${ver1[i]} < 10#${ver2[i]}))
|
||||
then
|
||||
return 2
|
||||
fi
|
||||
done
|
||||
return 0
|
||||
}
|
||||
|
||||
funct_check_stat () { # Funktion zum Check Verfügbarkeit der Downloadseiten und der Internetverbindung
|
||||
# Test for network conection
|
||||
echo -e "\033[1;34m Ich schau dann mal ob Dein Computer überhaupt ein Netzwerk hat :-)";
|
||||
for INTERFACE in $(ls /sys/class/net/ | grep -v lo);
|
||||
do
|
||||
if [[ $(cat /sys/class/net/$INTERFACE/carrier) = 1 ]]; then
|
||||
ONLINE=1
|
||||
fi
|
||||
done
|
||||
|
||||
if [ $ONLINE ]; then
|
||||
echo -e "\033[32m Oh Wunder! Habe ein Netzwerk gefunden. Verbinde über Interface $INTERFACE,
|
||||
was nicht heißt das es geht :-P";
|
||||
if [[ $stat_1 -eq 200 && $stat_2 -eq 200 ]]; then
|
||||
return 1
|
||||
elif [[ $stat_1 -eq !200 ]]; then
|
||||
return 2
|
||||
else
|
||||
return 3
|
||||
fi
|
||||
else
|
||||
echo -e "\033[31m Fehler!!! Sieh Dir die verdammte Desktop Benachrichtigung an!";
|
||||
return 4
|
||||
fi
|
||||
}
|
||||
|
||||
funct_check_run_calibre () {
|
||||
CALIBRE_PID=`ps ax | grep /opt/calibre/bin/calibre | grep -v grep | awk '{printf $1}'`
|
||||
|
||||
while [ $CALIBRE_PID ];
|
||||
do
|
||||
$NOTIFY "Um das Update installieren zu können, muss Calibre beendet werden. Calibre wird in einer Minute vom Update Service beendet. !!!Bitte speichere alle wichtigen Daten!!!"
|
||||
sleep 3
|
||||
for (( i=60; i>0; i-- ));
|
||||
do
|
||||
echo -e "\033[31m noch \033[32m>>$i<< \033[31m Sekunden bis zum Calibre Programmende"
|
||||
sleep 1
|
||||
clear
|
||||
funct_term_output
|
||||
done
|
||||
kill -15 $CALIBRE_PID
|
||||
return 0
|
||||
done
|
||||
return 0
|
||||
}
|
||||
|
||||
funct_http_status_code () {
|
||||
echo -e "\033[1;34m Hole Status Code von \"$CHECK_CALIBRE_DOWNLOAD_PAGE\". Bitte warten.";
|
||||
stat_1=$(curl -o /dev/null --silent --head --write-out '%{http_code}' $CHECK_CALIBRE_DOWNLOAD_PAGE)
|
||||
echo -e "\033[32m Status Codes von \"$CHECK_CALIBRE_DOWNLOAD_PAGE\" erhalten";
|
||||
echo -e "\033[1;34m Hole Status Code von \"$CHECK_DOWNLOAD_URL\". Bitte warten.";
|
||||
stat_2=$(curl -o /dev/null --silent --head --write-out '%{http_code}' $CHECK_DOWNLOAD_URL)
|
||||
echo -e "\033[32m Status Codes von \"$CHECK_DOWNLOAD_URL\" erhalten";
|
||||
return 0
|
||||
}
|
||||
|
||||
funct_term_output () {
|
||||
## Beginne mit der Ausgbe ##
|
||||
tty -s && clear
|
||||
echo -e "\033[44m \033[0m\033[1m Calibre AutoUpdate Version $scriptVersion\033[0m\n\033[44m \033[0m 2014 by Marko Oldenburg\n";
|
||||
return 0
|
||||
}
|
||||
|
||||
#######################################################
|
||||
#######################################################
|
||||
## main vom Script --- Start des Updater Skripts
|
||||
|
||||
# Wenn eine grafische Oberfläche vorhanden ist, wird u.a. "notify-send" für Benachrichtigungen verwendet, ansonsten immer "echo"
|
||||
NOTIFY="echo"
|
||||
[ -n "$DISPLAY" ] && NOTIFY="notify-send -t 10000 -i /usr/share/icons/hicolor/256x256/apps/calibre-gui.png Calibre-Auto-Updater"
|
||||
|
||||
funct_term_output
|
||||
|
||||
funct_http_status_code # Funktion hole einen http-status code
|
||||
|
||||
funct_check_stat # Funktion check Status Netzwerk und Downloadadressen
|
||||
case $? in
|
||||
1)
|
||||
#Ermitteln der letzten aktuell verfügbaren Version
|
||||
LATEST_VERSION=`curl -s $CALIBRE_DOWNLOAD_PAGE | grep 'latest release of calibre' | sed 's/[^0-9.]*\([1-9]*[0-9]\.[1-9]*[0-9]\).*/\1/'`
|
||||
#Ermitteln der aktuell installierten Version.
|
||||
CURRENT_VERSION=`calibre --version | sed 's/[^0-9.]*\([0-9.]*\).*/\1/'`
|
||||
|
||||
funct_vercomp $CURRENT_VERSION $LATEST_VERSION # Funktion Versionvergleich
|
||||
case $? in
|
||||
0)
|
||||
$NOTIFY "Deine Calibre Version ist auf dem aktuellsten Stand ($CURRENT_VERSION).";;
|
||||
1)
|
||||
$NOTIFY "Uh Oh! Deine Calibre Version ist aktueller wie die letzte Verfügbare! (Installiert: \"$CURRENT_VERSION\", Letzte Verfügbare: \"$LATEST_VERSION\")";;
|
||||
2)
|
||||
$NOTIFY "Ein Calibre Update ist verfügbar. (Installiert: \"$CURRENT_VERSION\", letzte Verfügbare: \"$LATEST_VERSION\")"
|
||||
# Installiert die aktuellste verfügbare Version von der Calibre Homepage
|
||||
funct_check_run_calibre # Aufruf der Funktion ob Calibre gestartet ist
|
||||
$NOTIFY "Das Update wird nun installiert. Bitte gib hierzu Dein Userpasswort im Terminalfenster ein..."
|
||||
echo -e "\033[1;34m"
|
||||
sudo -v && wget -nv -O- $DOWNLOAD_URL | sudo python -c "import sys; main=lambda x:sys.stderr.write('Download failed\n'); exec(sys.stdin.read()); main('$CALIBRE_INSTALL_LOCATION')"
|
||||
#
|
||||
$NOTIFY "Calibre wurde upgedatet."
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
2)
|
||||
$NOTIFY "Versionsvergleich fehlgeschlagen!!! Die Calibre Homepage \"$CHECK_CALIBRE_DOWNLOAD_PAGE\" ist nicht verfügbar!"
|
||||
;;
|
||||
3)
|
||||
$NOTIFY "Update fehlgeschlagen!!! Die Download Seite \"$CHECK_DOWNLOAD_URL\" ist nicht verfügbar!"
|
||||
;;
|
||||
4)
|
||||
$NOTIFY "Update und Versionsvergleich fehlgeschlagen!!! Kann kein Netzwerkinterface finden!"
|
||||
;;
|
||||
esac
|
Loading…
Reference in New Issue
Block a user