mirror of
https://github.com/YunoHost/package_check.git
synced 2024-09-03 20:06:20 +02:00
Auto apt update, ajout lock
This commit is contained in:
parent
e41bc77148
commit
ad955ec177
5 changed files with 100 additions and 30 deletions
|
@ -9,6 +9,33 @@
|
|||
|
||||
echo ""
|
||||
|
||||
## Récupère les arguments
|
||||
# --bash-mode
|
||||
bash_mode=$(echo "$*" | grep -c -e "--bash-mode") # bash_mode vaut 1 si l'argument est présent.
|
||||
# --no-lxc
|
||||
no_lxc=$(echo "$*" | grep -c -e "--no-lxc") # no_lxc vaut 1 si l'argument est présent.
|
||||
# --build-lxc
|
||||
build_lxc=$(echo "$*" | grep -c -e "--build-lxc") # build_lxc vaut 1 si l'argument est présent.
|
||||
# --force-install-ok
|
||||
force_install_ok=$(echo "$*" | grep -c -e "--force-install-ok") # force-install-ok vaut 1 si l'argument est présent.
|
||||
# --help
|
||||
if [ "$notice" -eq 0 ]; then
|
||||
notice=$(echo "$*" | grep -c -e "--help") # notice vaut 1 si l'argument est présent. Il affichera alors l'aide.
|
||||
fi
|
||||
arg_app=$(echo "$*" | sed 's/--bash-mode\|--no-lxc\|--build-lxc\|--force-install-ok//g' | sed 's/^ *\| *$//g') # Supprime les arguments déjà lu pour ne garder que l'app. Et supprime les espaces au début et à la fin
|
||||
# echo "arg_app=$arg_app."
|
||||
|
||||
if [ "$notice" -eq 1 ]; then
|
||||
echo -e "\nUsage:"
|
||||
echo "package_check.sh [--bash-mode] [--no-lxc] [--build-lxc] [--force-install-ok] [--help] \"check package\""
|
||||
echo -e "\n\t--bash-mode\t\tDo not ask for continue check. Ignore auto_remove."
|
||||
echo -e "\t--no-lxc\t\tDo not use a LXC container. You should use this option only on a test environnement."
|
||||
echo -e "\t--build-lxc\t\tInstall LXC and build the container if necessary."
|
||||
echo -e "\t--force-install-ok\tForce following test even if all install are failed."
|
||||
echo -e "\t--help\t\t\tDisplay this notice."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Récupère le dossier du script
|
||||
if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$(echo $PWD/$(dirname "$0" | cut -d '.' -f2) | sed 's@/$@@')"; fi
|
||||
|
||||
|
@ -33,6 +60,22 @@ if [ "$?" -ne 0 ]; then # En cas d'échec de connexion, tente de pinger un autre
|
|||
fi
|
||||
fi
|
||||
|
||||
if test -e "$script_dir/pcheck.lock"
|
||||
then # Présence du lock, Package check ne peut pas continuer.
|
||||
echo "Le fichier $script_dir/pcheck.lock est présent. Package check est déjà utilisé."
|
||||
rep="N"
|
||||
if [ "$bash_mode" -ne 1 ]; then
|
||||
echo -n "Souhaitez-vous continuer quand même et ignorer le lock ? (Y/N) :"
|
||||
read rep
|
||||
fi
|
||||
if [ "${rep:0:1}" != "Y" ] && [ "${rep:0:1}" != "y" ] && [ "${rep:0:1}" != "O" ] && [ "${rep:0:1}" != "o" ]
|
||||
then # Teste uniquement le premier caractère de la réponse pour continuer malgré le lock.
|
||||
echo "L'exécution de Package check est annulée"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
touch "$script_dir/pcheck.lock" # Met en place le lock de Package check
|
||||
|
||||
version_script="$(git ls-remote https://github.com/YunoHost/package_check | cut -f 1 | head -n1)"
|
||||
if [ -e "$script_dir/package_version" ]
|
||||
then
|
||||
|
@ -75,33 +118,6 @@ then
|
|||
notice=1
|
||||
fi
|
||||
|
||||
## Récupère les arguments
|
||||
# --bash-mode
|
||||
bash_mode=$(echo "$*" | grep -c -e "--bash-mode") # bash_mode vaut 1 si l'argument est présent.
|
||||
# --no-lxc
|
||||
no_lxc=$(echo "$*" | grep -c -e "--no-lxc") # no_lxc vaut 1 si l'argument est présent.
|
||||
# --build-lxc
|
||||
build_lxc=$(echo "$*" | grep -c -e "--build-lxc") # build_lxc vaut 1 si l'argument est présent.
|
||||
# --force-install-ok
|
||||
force_install_ok=$(echo "$*" | grep -c -e "--force-install-ok") # force-install-ok vaut 1 si l'argument est présent.
|
||||
# --help
|
||||
if [ "$notice" -eq 0 ]; then
|
||||
notice=$(echo "$*" | grep -c -e "--help") # notice vaut 1 si l'argument est présent. Il affichera alors l'aide.
|
||||
fi
|
||||
arg_app=$(echo "$*" | sed 's/--bash-mode\|--no-lxc\|--build-lxc\|--force-install-ok//g' | sed 's/^ *\| *$//g') # Supprime les arguments déjà lu pour ne garder que l'app. Et supprime les espaces au début et à la fin
|
||||
# echo "arg_app=$arg_app."
|
||||
|
||||
if [ "$notice" -eq 1 ]; then
|
||||
echo -e "\nUsage:"
|
||||
echo "package_check.sh [--bash-mode] [--no-lxc] [--build-lxc] [--force-install-ok] [--help] \"check package\""
|
||||
echo -e "\n\t--bash-mode\t\tDo not ask for continue check. Ignore auto_remove."
|
||||
echo -e "\t--no-lxc\t\tDo not use a LXC container. You should use this option only on a test environnement."
|
||||
echo -e "\t--build-lxc\t\tInstall LXC and build the container if necessary."
|
||||
echo -e "\t--force-install-ok\tForce following test even if all install are failed."
|
||||
echo -e "\t--help\t\t\tDisplay this notice."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
USER_TEST=package_checker
|
||||
PASSWORD_TEST=checker_pwd
|
||||
PATH_TEST=/check
|
||||
|
@ -133,6 +149,7 @@ then # Si le conteneur lxc est utilisé
|
|||
ECHO_FORMAT "Lxc n'est pas installé, ou la machine $LXC_NAME n'est pas créée.\n" "red"
|
||||
ECHO_FORMAT "Utilisez le script 'lxc_build.sh' pour installer lxc et créer la machine.\n" "red"
|
||||
ECHO_FORMAT "Ou utilisez l'argument --no-lxc\n" "red"
|
||||
sudo rm "$script_dir/pcheck.lock" # Retire le lock
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
@ -148,6 +165,7 @@ else # Vérifie l'utilisateur et le domain si lxc n'est pas utilisé.
|
|||
sudo yunohost user create --firstname "$USER_TEST_CLEAN" --mail "$USER_TEST_CLEAN@$DOMAIN" --lastname "$USER_TEST_CLEAN" --password "$PASSWORD_TEST" "$USER_TEST"
|
||||
if [ "$?" -ne 0 ]; then
|
||||
ECHO_FORMAT "La création de l'utilisateur de test a échoué. Impossible de continuer.\n" "red"
|
||||
sudo rm "$script_dir/pcheck.lock" # Retire le lock
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
@ -158,6 +176,7 @@ else # Vérifie l'utilisateur et le domain si lxc n'est pas utilisé.
|
|||
sudo yunohost domain add "$SOUS_DOMAIN"
|
||||
if [ "$?" -ne 0 ]; then
|
||||
ECHO_FORMAT "La création du sous-domain de test a échoué. Impossible de continuer.\n" "red"
|
||||
sudo rm "$script_dir/pcheck.lock" # Retire le lock
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
@ -185,6 +204,7 @@ fi
|
|||
|
||||
if [ ! -d "$APP_CHECK" ]; then
|
||||
ECHO_FORMAT "Le dossier de l'application a tester est introuvable...\n" "red"
|
||||
sudo rm "$script_dir/pcheck.lock" # Retire le lock
|
||||
exit 1
|
||||
fi
|
||||
sudo rm -rf "$APP_CHECK/.git" # Purge des fichiers de git
|
||||
|
|
27
sub_scripts/auto_upgrade.sh
Normal file
27
sub_scripts/auto_upgrade.sh
Normal file
|
@ -0,0 +1,27 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Ce script n'a vocation qu'a être dans un cron. De préférence une fois par jour ou par semaine.
|
||||
|
||||
# Récupère le dossier du script
|
||||
if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$(echo $PWD/$(dirname "$0" | cut -d '.' -f2) | sed 's@/$@@')"; fi
|
||||
|
||||
echo ""
|
||||
date
|
||||
# Vérifie que Package check n'est pas déjà utilisé.
|
||||
timeout=7300 # Durée d'attente maximale
|
||||
inittime=$(date +%s) # Enregistre l'heure de début d'attente
|
||||
while test -e "$script_dir/../pcheck.lock"; do # Vérifie la présence du lock de Package check
|
||||
sleep 60 # Attend la fin de l'exécution de Package check.
|
||||
echo -n "."
|
||||
if [ $(( $(date +%s) - $inittime )) -ge $timeout ] # Vérifie la durée d'attente
|
||||
then # Si la durée dépasse le timeout fixé, force l'arrêt.
|
||||
inittime=0 # Indique l'arrêt forcé du script
|
||||
echo "Temps d'attente maximal dépassé, la mise à jour est annulée."
|
||||
break
|
||||
fi
|
||||
done
|
||||
echo ""
|
||||
|
||||
if [ "$inittime" -ne 0 ]; then # Continue seulement si le timeout n'est pas dépassé.
|
||||
"$script_dir/lxc_upgrade.sh" # Exécute le script d'upgrade de Package check
|
||||
fi
|
|
@ -102,6 +102,7 @@ RESTORE_CONTAINER () {
|
|||
# Résultats finaux
|
||||
if [ $START_STATUS -eq 1 ]; then
|
||||
echo -e "\e[91m\n> Le conteneur $LXC_NAME1 n'a pas pu être réparé...\nIl est nécessaire de détruire et de reconstruire le conteneur.\e[0m"
|
||||
sudo rm "$script_dir/../pcheck.lock" # Retire le lock
|
||||
exit 1
|
||||
else
|
||||
echo -e "\e[92m\n> Le conteneur démarre correctement.\e[0m"
|
||||
|
@ -171,11 +172,12 @@ LXC_NETWORK_CONFIG () {
|
|||
fi
|
||||
}
|
||||
|
||||
touch "$script_dir/../pcheck.lock" # Met en place le lock de Package check
|
||||
|
||||
STOP_CONTAINER
|
||||
STOP_NETWORK
|
||||
check_repair=0
|
||||
|
||||
|
||||
### Test de la configuration réseau
|
||||
echo -e "\e[1m> Test de la configuration réseau du côté de l'hôte:\e[0m"
|
||||
CREATE_BRIDGE () {
|
||||
|
@ -220,6 +222,7 @@ do
|
|||
else
|
||||
sudo ifconfig
|
||||
echo -e "\e[91mLe bridge n'obtient pas la bonne adresse IP après réparation. Tenter une réinstallation complète de Package_checker...\e[0m"
|
||||
sudo rm "$script_dir/../pcheck.lock" # Retire le lock
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
@ -234,6 +237,7 @@ do
|
|||
else
|
||||
sudo ifconfig
|
||||
echo -e "\e[91mLe bridge ne démarre pas après réparation. Tenter une réinstallation complète de Package_checker...\e[0m"
|
||||
sudo rm "$script_dir/../pcheck.lock" # Retire le lock
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
@ -250,6 +254,7 @@ then
|
|||
echo -e "\e[92mLes règles iptables sont appliquées correctement.\e[0m"
|
||||
else
|
||||
echo -e "\e[91mLes règles iptables ne sont pas appliquées correctement, vérifier la configuration du système...\e[0m"
|
||||
sudo rm "$script_dir/../pcheck.lock" # Retire le lock
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@ -277,6 +282,7 @@ if [ "$?" -ne 0 ]; then # En cas d'échec de connexion, tente de pinger un autre
|
|||
ping -q -c 2 framasoft.org > /dev/null 2>&1
|
||||
if [ "$?" -ne 0 ]; then # En cas de nouvel échec de connexion. On considère que la connexion est down...
|
||||
echo -e "\e[91mL'hôte semble ne pas avoir accès à internet. La connexion internet est indispensable.\e[0m"
|
||||
sudo rm "$script_dir/../pcheck.lock" # Retire le lock
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
@ -307,6 +313,7 @@ do
|
|||
if [ "$lxc_net_check" -eq 4 ]
|
||||
then
|
||||
echo -e "\e[91mImpossible de rétablir la connexion internet du conteneur.\e[0m"
|
||||
sudo rm "$script_dir/../pcheck.lock" # Retire le lock
|
||||
exit 1
|
||||
fi
|
||||
echo -e "\e[91mLe conteneur LXC n'accède pas à internet...\e[0m"
|
||||
|
@ -368,6 +375,7 @@ echo -e "\e[1m\n> Test de l'accès ssh:\e[0m"
|
|||
# Check user
|
||||
if [ "$USER" != "$(cat "$script_dir/setup_user")" ] && test -e "$script_dir/setup_user"; then
|
||||
echo -e "\e[91mPour tester l'accès ssh, le script doit être exécuté avec l'utilisateur $(cat "$script_dir/setup_user")\e[0m"
|
||||
sudo rm "$script_dir/../pcheck.lock" # Retire le lock
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@ -417,6 +425,7 @@ echo -e "\e[1m\n> Vérifie que Yunohost est installé dans le conteneur:\e[0m"
|
|||
sudo lxc-attach -n $LXC_NAME -- sudo yunohost -v
|
||||
if [ "$?" -ne 0 ]; then # Si la commande échoue, il y a un problème avec Yunohost
|
||||
echo -e "\e[91mYunohost semble mal installé. Il est nécessaire de détruire et de reconstruire le conteneur.\e[0m"
|
||||
sudo rm "$script_dir/../pcheck.lock" # Retire le lock
|
||||
exit 1
|
||||
else
|
||||
echo -e "\e[92mYunohost est installé correctement.\e[0m"
|
||||
|
@ -430,3 +439,5 @@ echo -e "\e[92m\nLe conteneur ne présente aucune erreur.\e[0m"
|
|||
if [ "$check_repair" -eq 1 ]; then
|
||||
echo -e "\e[91mMais des réparations ont été nécessaires. Refaire un test pour s'assurer que tout est correct...\e[0m"
|
||||
fi
|
||||
|
||||
sudo rm "$script_dir/../pcheck.lock" # Retire le lock
|
||||
|
|
|
@ -12,6 +12,8 @@ if [ "$USER" != "$(cat "$script_dir/setup_user")" ] && test -e "$script_dir/setu
|
|||
exit 0
|
||||
fi
|
||||
|
||||
sudo rm "$script_dir/../pcheck.lock" # Retire le lock
|
||||
|
||||
echo "> Retire l'ip forwarding."
|
||||
sudo rm /etc/sysctl.d/lxc_pchecker.conf
|
||||
sudo sysctl -p
|
||||
|
|
|
@ -3,6 +3,13 @@
|
|||
# Récupère le dossier du script
|
||||
if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$(echo $PWD/$(dirname "$0" | cut -d '.' -f2) | sed 's@/$@@')"; fi
|
||||
|
||||
if test -e "$script_dir/../pcheck.lock"
|
||||
then # L'upgrade est annulé
|
||||
echo "Le fichier $script_dir/../pcheck.lock est présent. Package check est déjà utilisé. Exécution annulée..."
|
||||
exit 0
|
||||
fi
|
||||
touch "$script_dir/../pcheck.lock" # Met en place le lock de Package check
|
||||
|
||||
PLAGE_IP=$(cat "$script_dir/lxc_build.sh" | grep PLAGE_IP= | cut -d '"' -f2)
|
||||
LXC_NAME=$(cat "$script_dir/lxc_build.sh" | grep LXC_NAME= | cut -d '=' -f2)
|
||||
|
||||
|
@ -10,6 +17,7 @@ LXC_NAME=$(cat "$script_dir/lxc_build.sh" | grep LXC_NAME= | cut -d '=' -f2)
|
|||
if [ "$USER" != "$(cat "$script_dir/setup_user")" ] && test -e "$script_dir/setup_user"; then
|
||||
echo -e "\e[91mCe script doit être exécuté avec l'utilisateur $(cat "$script_dir/setup_user")"
|
||||
echo -en "\e[0m"
|
||||
rm "$script_dir/../pcheck.lock" # Retire le lock
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
@ -53,9 +61,9 @@ if [ "$?" -eq 0 ]; then
|
|||
update_apt=1
|
||||
fi
|
||||
echo "> Upgrade"
|
||||
sudo lxc-attach -n $LXC_NAME -- apt-get dist-upgrade
|
||||
sudo lxc-attach -n $LXC_NAME -- apt-get dist-upgrade -y
|
||||
echo "> Clean"
|
||||
sudo lxc-attach -n $LXC_NAME -- apt-get autoremove
|
||||
sudo lxc-attach -n $LXC_NAME -- apt-get autoremove -y
|
||||
sudo lxc-attach -n $LXC_NAME -- apt-get autoclean
|
||||
|
||||
echo "> Arrêt de la machine virtualisée"
|
||||
|
@ -76,3 +84,5 @@ then
|
|||
sudo lxc-snapshot -n $LXC_NAME -d snap0
|
||||
sudo lxc-snapshot -n $LXC_NAME
|
||||
fi
|
||||
|
||||
sudo rm "$script_dir/../pcheck.lock" # Retire le lock
|
||||
|
|
Loading…
Add table
Reference in a new issue