mirror of
https://github.com/YunoHost/package_check.git
synced 2024-09-03 20:06:20 +02:00
Gestions d'erreurs du conteneur
This commit is contained in:
parent
621e7d1784
commit
e46e9da61b
2 changed files with 87 additions and 38 deletions
|
@ -23,25 +23,47 @@ LXC_INIT () {
|
|||
LXC_START () {
|
||||
if [ "$no_lxc" -eq 0 ]
|
||||
then
|
||||
# Démarrage de la machine
|
||||
sudo lxc-start -n $LXC_NAME -d | tee -a "$RESULT" 2>&1
|
||||
for i in `seq 1 10`
|
||||
do # Vérifie que la machine est accessible en ssh avant de commencer. Il lui faut le temps de démarrer.
|
||||
echo -n .
|
||||
if ssh $ARG_SSH $LXC_NAME "exit 0" > /dev/null 2>&1; then
|
||||
break
|
||||
for i in `seq 1 3`
|
||||
do # Tente jusqu'à 3 fois de démarrer le conteneur
|
||||
# Démarrage de la machine
|
||||
sudo lxc-start -n $LXC_NAME -d | tee -a "$RESULT" 2>&1
|
||||
for j in `seq 1 10`
|
||||
do # Vérifie que la machine est accessible en ssh avant de commencer. Il lui faut le temps de démarrer.
|
||||
echo -n .
|
||||
if ssh $ARG_SSH $LXC_NAME "exit 0" > /dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
failstart=0
|
||||
sudo lxc-ls -f | grep $LXC_NAME | sed 's/- NO//'
|
||||
if [ $(sudo lxc-info --name $LXC_NAME | grep -c "STOPPED") -ne 0 ]; then
|
||||
ECHO_FORMAT "Le conteneur n'a pas démarré correctement...\n" "lred" "bold"
|
||||
failstart=1
|
||||
if [ "$i" -ne 3 ]; then
|
||||
echo "Redémarrage du conteneur..."
|
||||
fi
|
||||
LXC_STOP
|
||||
elif ssh $ARG_SSH $LXC_NAME "ping -q -c 2 security.debian.org > /dev/null 2>&1; exit \$?"; then # Si le conteneur a démarré, test sa connectivité.
|
||||
ECHO_FORMAT "Le conteneur ne parvient pas à accéder à internet...\n" "lred" "bold"
|
||||
failstart=1
|
||||
if [ "$i" -ne 3 ]; then
|
||||
echo "Redémarrage du conteneur..."
|
||||
fi
|
||||
LXC_STOP
|
||||
else
|
||||
break # Sort de la boucle for si le démarrage est réussi
|
||||
fi
|
||||
if [ "$i" -eq 3 ] && [ "$failstart" -eq 1 ]; then # Si le dernier démarrage est encore en erreur, stoppe le test
|
||||
ECHO_FORMAT "Le conteneur a rencontré des erreurs 3 fois de suite...\nSi le problème persiste, utilisez le script lxc_check.sh pour vérifier et réparer le conteneur." "lred" "bold"
|
||||
return 1
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
sudo lxc-ls -f | grep $LXC_NAME | sed 's/- NO//'
|
||||
if [ $(sudo lxc-info --name $LXC_NAME | grep -c "STOPPED") -ne 0 ]; then
|
||||
ECHO_FORMAT "Le conteneur n'a pas démarré correctement...\nSi le problème persiste, utilisez le script lxc_check.sh pour vérifier et réparer le conteneur." "lred" "bold"
|
||||
return 1
|
||||
fi
|
||||
scp -rq "$APP_CHECK" "$LXC_NAME": >> "$RESULT" 2>&1
|
||||
ssh $ARG_SSH $LXC_NAME "$1 > /dev/null 2>> debug_output.log; exit \$?" >> "$RESULT" 2>&1 # Exécute la commande dans la machine LXC
|
||||
returncode=$?
|
||||
sudo cat "/var/lib/lxc/$LXC_NAME/rootfs/home/pchecker/debug_output.log" >> "$OUTPUTD" # Récupère le contenu du OUTPUTD distant pour le réinjecter dans le local
|
||||
return "$?"
|
||||
return $returncode
|
||||
else # Sinon exécute la commande directement.
|
||||
eval "$1" > /dev/null 2>> "$OUTPUTD"
|
||||
fi
|
||||
|
|
75
sub_scripts/testing_process.sh
Normal file → Executable file
75
sub_scripts/testing_process.sh
Normal file → Executable file
|
@ -42,23 +42,27 @@ CHECK_URL () {
|
|||
fi
|
||||
echo -e "$IP_CURL $DOMAIN #package_check\n$IP_CURL $SOUS_DOMAIN #package_check" | sudo tee -a /etc/hosts > /dev/null # Renseigne le hosts pour le domain à tester, pour passer directement sur localhost
|
||||
curl_error=0
|
||||
for i in 0 1
|
||||
http503=0
|
||||
i=1
|
||||
while [ "$i" -ne 3 ] # Tant que i vaut 1 ou 2, les tests continuent.
|
||||
do # 2 passes, pour effectuer un test avec le / final, et un autre sans.
|
||||
if [ "$i" -eq 0 ]; then # Test sans / final.
|
||||
if [ "$i" -eq 1 ]; then # Test sans / final.
|
||||
if [ "${CHECK_PATH:${#CHECK_PATH}-1}" == "/" ] # Si le dernier caractère est un /
|
||||
then
|
||||
MOD_CHECK_PATH="${CHECK_PATH:0:${#CHECK_PATH}-1}" # Supprime le /
|
||||
else
|
||||
MOD_CHECK_PATH=$CHECK_PATH
|
||||
fi
|
||||
i=2 # La prochaine boucle passera au 2e test
|
||||
fi
|
||||
if [ "$i" -eq 1 ]; then # Test avec / final.
|
||||
if [ "$i" -eq 2 ]; then # Test avec / final.
|
||||
if [ "${CHECK_PATH:${#CHECK_PATH}-1}" != "/" ] # Si le dernier caractère n'est pas un /
|
||||
then
|
||||
MOD_CHECK_PATH="$CHECK_PATH/" # Ajoute / à la fin du path
|
||||
else
|
||||
MOD_CHECK_PATH=$CHECK_PATH
|
||||
fi
|
||||
i=3 # La prochaine boucle terminera les tests
|
||||
fi
|
||||
rm -f "$script_dir/url_output" # Supprime le précédent fichier html si il est encore présent
|
||||
curl -LksS -w "%{http_code};%{url_effective}\n" $SOUS_DOMAIN$MOD_CHECK_PATH -o "$script_dir/url_output" > "$script_dir/curl_print"
|
||||
|
@ -76,6 +80,19 @@ CHECK_URL () {
|
|||
then # Le code d'erreur 401 fait exception, si il y a 401 c'est en général l'application qui le renvoi. Donc l'install est bonne.
|
||||
curl_error=1
|
||||
fi
|
||||
if [ "${HTTP_CODE}" = "503" ]
|
||||
then # Le code d'erreur 503 indique que la ressource est temporairement indisponible. On va le croire pour cette fois et lui donner une autre chance.
|
||||
curl_error=0
|
||||
ECHO_FORMAT "Service temporairement indisponible...\n" "lyellow" "bold"
|
||||
http503=$(( $http503 + 1 ))
|
||||
if [ $http503 -eq 3 ]; then
|
||||
curl_error=1 # Après 3 erreurs 503, le code est considéré définitivement comme une erreur
|
||||
else
|
||||
i=$(( $i - 1 )) # La boucle est décrémenté de 1 pour refaire le même test.
|
||||
sleep 1 # Attend 1 seconde pour laisser le temps au service de se mettre en place.
|
||||
continue # Retourne en début de boucle pour recommencer le test
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
URL_TITLE=$(grep "<title>" "$script_dir/url_output" | cut -d '>' -f 2 | cut -d '<' -f1)
|
||||
ECHO_FORMAT "Titre de la page: $URL_TITLE\n" "white"
|
||||
|
@ -333,16 +350,20 @@ CHECK_UPGRADE () {
|
|||
# Installation de l'app
|
||||
SETUP_APP
|
||||
LOG_EXTRACTOR
|
||||
ECHO_FORMAT "\nUpgrade sur la même version du package...\n" "white" "bold"
|
||||
# Upgrade de l'app
|
||||
COPY_LOG 1
|
||||
LXC_START "sudo yunohost --debug app upgrade $APPID -f \"$APP_PATH_YUNO\""
|
||||
YUNOHOST_RESULT=$?
|
||||
COPY_LOG 2
|
||||
LOG_EXTRACTOR
|
||||
# Test l'accès à l'app
|
||||
CHECK_URL
|
||||
tnote=$((tnote+1))
|
||||
if [ "$YUNOHOST_RESULT" -ne 0 ]; then
|
||||
ECHO_FORMAT "\nInstallation échouée...\n" "lred" "bold"
|
||||
else
|
||||
ECHO_FORMAT "\nUpgrade sur la même version du package...\n" "white" "bold"
|
||||
# Upgrade de l'app
|
||||
COPY_LOG 1
|
||||
LXC_START "sudo yunohost --debug app upgrade $APPID -f \"$APP_PATH_YUNO\""
|
||||
YUNOHOST_RESULT=$?
|
||||
COPY_LOG 2
|
||||
LOG_EXTRACTOR
|
||||
# Test l'accès à l'app
|
||||
CHECK_URL
|
||||
tnote=$((tnote+1))
|
||||
fi
|
||||
if [ "$YUNOHOST_RESULT" -eq 0 ] && [ "$curl_error" -eq 0 ]; then
|
||||
ECHO_FORMAT "--- SUCCESS ---\n" "lgreen" "bold"
|
||||
note=$((note+1))
|
||||
|
@ -403,14 +424,18 @@ CHECK_BACKUP_RESTORE () {
|
|||
# Installation de l'app
|
||||
SETUP_APP
|
||||
LOG_EXTRACTOR
|
||||
ECHO_FORMAT "\nBackup de l'application...\n" "white" "bold"
|
||||
# Backup de l'app
|
||||
COPY_LOG 1
|
||||
LXC_START "sudo yunohost --debug backup create -n Backup_test --apps $APPID --hooks $BACKUP_HOOKS"
|
||||
YUNOHOST_RESULT=$?
|
||||
COPY_LOG 2
|
||||
LOG_EXTRACTOR
|
||||
tnote=$((tnote+1))
|
||||
if [ "$YUNOHOST_RESULT" -ne 0 ]; then
|
||||
ECHO_FORMAT "\nInstallation échouée...\n" "lred" "bold"
|
||||
else
|
||||
ECHO_FORMAT "\nBackup de l'application...\n" "white" "bold"
|
||||
# Backup de l'app
|
||||
COPY_LOG 1
|
||||
LXC_START "sudo yunohost --debug backup create -n Backup_test --apps $APPID --hooks $BACKUP_HOOKS"
|
||||
YUNOHOST_RESULT=$?
|
||||
COPY_LOG 2
|
||||
LOG_EXTRACTOR
|
||||
tnote=$((tnote+1))
|
||||
fi
|
||||
if [ "$YUNOHOST_RESULT" -eq 0 ]; then
|
||||
ECHO_FORMAT "--- SUCCESS ---\n" "lgreen" "bold"
|
||||
note=$((note+1))
|
||||
|
@ -735,9 +760,11 @@ CHECK_COMMON_ERROR () {
|
|||
LOG_EXTRACTOR
|
||||
if [ "$1" == "incorrect_path" ] || [ "$1" == "port_already_use" ]; then
|
||||
# Test l'accès à l'app
|
||||
CHECK_URL
|
||||
if [ "$curl_error" -ne 0 ]; then
|
||||
YUNOHOST_RESULT=$curl_error
|
||||
if [ "$YUNOHOST_RESULT" -eq 0 ]; then # Test l'url si l'installation à réussie.
|
||||
CHECK_URL
|
||||
if [ "$curl_error" -ne 0 ]; then
|
||||
YUNOHOST_RESULT=$curl_error
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
tnote=$((tnote+1))
|
||||
|
|
Loading…
Add table
Reference in a new issue