From 151b7a230f176e42845c170e8d5af1eb7085bcb9 Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Wed, 2 May 2018 11:36:26 +0200 Subject: [PATCH] Full stretch support --- config.modele | 2 + sub_scripts/lxc_build.sh | 12 +- sub_scripts/lxc_check.sh | 475 ++++++++++++++++++++------------------- 3 files changed, 254 insertions(+), 235 deletions(-) diff --git a/config.modele b/config.modele index 8980274..c148ee3 100644 --- a/config.modele +++ b/config.modele @@ -24,3 +24,5 @@ LXC_BRIDGE= # Distribution debian DISTRIB= +# Branche à utiliser pour le script d'install de cette distribution (si non standard) +BRANCH= diff --git a/sub_scripts/lxc_build.sh b/sub_scripts/lxc_build.sh index e431bec..4ca07fb 100755 --- a/sub_scripts/lxc_build.sh +++ b/sub_scripts/lxc_build.sh @@ -16,6 +16,7 @@ then dnsforce=$(cat "$pcheck_config" | grep dnsforce= | cut -d '=' -f2) main_iface=$(cat "$pcheck_config" | grep iface= | cut -d '=' -f2) DISTRIB=$(cat "$pcheck_config" | grep DISTRIB= | cut -d '=' -f2) + branch=$(cat "$pcheck_config" | grep BRANCH= | cut -d '=' -f2) fi LOG_BUILD_LXC="$script_dir/Build_lxc.log" @@ -27,6 +28,7 @@ test -n "$LXC_NAME" || LXC_NAME=pchecker_lxc test -n "$LXC_BRIDGE" || LXC_BRIDGE=lxc-pchecker test -n "$dnsforce" || dnsforce=1 test -n "$DISTRIB" || DISTRIB=jessie +test -n "$branch" || branch="" ARG_SSH="-t" # Tente de définir l'interface réseau principale @@ -65,7 +67,8 @@ echo -e "# Domaine de test\nDOMAIN=$DOMAIN\n" >> "$pcheck_config" echo -e "# Mot de passe\nYUNO_PWD=$YUNO_PWD\n" >> "$pcheck_config" echo -e "# Nom du conteneur\nLXC_NAME=$LXC_NAME\n" >> "$pcheck_config" echo -e "# Nom du bridge\nLXC_BRIDGE=$LXC_BRIDGE\n" >> "$pcheck_config" -echo -e "# Distribution debian\nDISTRIB=$DISTRIB\n" >> "$pcheck_config" +echo -e "# Distribution debian\nDISTRIB=$DISTRIB" >> "$pcheck_config" +echo -e "# Branche à utiliser pour le script d'install de cette distribution (si non standard)\nBRANCH=$branch\n" >> "$pcheck_config" echo -e "\e[1m> Update et install lxc lxctl\e[0m" | tee -a "$LOG_BUILD_LXC" sudo apt-get update >> "$LOG_BUILD_LXC" 2>&1 @@ -176,11 +179,10 @@ sudo lxc-attach -n $LXC_NAME -- dpkg-reconfigure openssh-server >> "$LOG_BUILD_ sudo lxc-attach -n $LXC_NAME -- locale-gen en_US.UTF-8 >> "$LOG_BUILD_LXC" 2>&1 sudo lxc-attach -n $LXC_NAME -- localedef -i en_US -f UTF-8 en_US.UTF-8 >> "$LOG_BUILD_LXC" 2>&1 -if [ "$DISTRIB" == "stretch" ]; then - branch="--branch stretch" -else - branch="" +if [ -n "$branch" ]; then + branch="--branch $branch" fi + ssh $ARG_SSH $LXC_NAME "git clone https://github.com/YunoHost/install_script $branch /tmp/install_script" >> "$LOG_BUILD_LXC" 2>&1 echo -e "\e[1m> Installation de Yunohost...\e[0m" | tee -a "$LOG_BUILD_LXC" ssh $ARG_SSH $LXC_NAME "cd /tmp/install_script; sudo ./install_yunohost -a" | tee -a "$LOG_BUILD_LXC" 2>&1 diff --git a/sub_scripts/lxc_check.sh b/sub_scripts/lxc_check.sh index 0eb7106..4073e1e 100755 --- a/sub_scripts/lxc_check.sh +++ b/sub_scripts/lxc_check.sh @@ -66,7 +66,7 @@ if [ -z "$main_iface" ]; then fi STOP_CONTAINER () { - echo "Arrêt du conteneur $LXC_NAME" + echo "Arrêt du conteneur $LXC_NAME" sudo lxc-stop -n $LXC_NAME } @@ -81,20 +81,20 @@ START_NETWORK () { STOP_NETWORK () { echo "Arrêt du réseau pour le conteneur." - sudo iptables -D FORWARD -i $LXC_BRIDGE -o $main_iface -j ACCEPT > /dev/null 2>&1 - sudo iptables -D FORWARD -i $main_iface -o $LXC_BRIDGE -j ACCEPT > /dev/null 2>&1 + sudo iptables -D FORWARD -i $LXC_BRIDGE -o $main_iface -j ACCEPT > /dev/null 2>&1 + sudo iptables -D FORWARD -i $main_iface -o $LXC_BRIDGE -j ACCEPT > /dev/null 2>&1 sudo iptables -t nat -D POSTROUTING -s $PLAGE_IP.0/24 -j MASQUERADE > /dev/null 2>&1 sudo ifdown --force $LXC_BRIDGE > /dev/null 2>&1 } REBOOT_CONTENEUR () { - echo "Redémarrage du conteneur." - STOP_CONTAINER - STOP_NETWORK - START_NETWORK - echo "Démarrage du conteneur." - sudo lxc-start -n $LXC_NAME -d > /dev/null 2>&1 # Démarre le conteneur - sudo lxc-wait -n $LXC_NAME -s 'RUNNING' -t 60 # Attend pendant 60s maximum que le conteneur démarre + echo "Redémarrage du conteneur." + STOP_CONTAINER + STOP_NETWORK + START_NETWORK + echo "Démarrage du conteneur." + sudo lxc-start -n $LXC_NAME -d > /dev/null 2>&1 # Démarre le conteneur + sudo lxc-wait -n $LXC_NAME -s 'RUNNING' -t 60 # Attend pendant 60s maximum que le conteneur démarre } CHECK_CONTAINER () { @@ -118,7 +118,7 @@ RESTORE_SNAPSHOT () { STATUS=$? if [ "$STATUS" -eq 1 ]; then echo -e "\e[91m> Conteneur $LXC_NAME en défaut.\e[0m" - STOP_CONTAINER + STOP_CONTAINER return 1 else echo -e "\e[92m> Conteneur $LXC_NAME en état de marche.\e[0m" @@ -142,89 +142,102 @@ RESTORE_ARCHIVE_SNAPSHOT () { } RESTORE_CONTAINER () { - # Tente des restaurations du conteneur - # Restauration des snapshots - STOP_CONTAINER - if [ $START_STATUS -eq 1 ]; then - RESTORE_SNAPSHOT - START_STATUS=$? - fi - # Restauration des archives des snapshots - if [ $START_STATUS -eq 1 ]; then - RESTORE_ARCHIVE_SNAPSHOT - START_STATUS=$? - fi - # 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" + # Tente des restaurations du conteneur + # Restauration des snapshots + STOP_CONTAINER + if [ $START_STATUS -eq 1 ]; then + RESTORE_SNAPSHOT + START_STATUS=$? + fi + # Restauration des archives des snapshots + if [ $START_STATUS -eq 1 ]; then + RESTORE_ARCHIVE_SNAPSHOT + START_STATUS=$? + fi + # 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" - fi + exit 1 + else + echo -e "\e[92m\n> Le conteneur démarre correctement.\e[0m" + fi } LXC_NETWORK_CONFIG () { - lxc_network=0 - if ! sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q "^lxc.network.type = veth"; then - lxc_network=1 # Si la ligne de la config réseau est absente, c'est une erreur. - check_repair=1 - if sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q ".*lxc.network.type"; then # Si la ligne est incorrecte, elle est corrigée. - sudo sed -i "s/.*lxc.network.type.*/lxc.network.type = veth/g" /var/lib/lxc/$LXC_NAME/config - else # Sinon elle est ajoutée. - echo "lxc.network.type = veth" | sudo tee -a /var/lib/lxc/$LXC_NAME/config + lxc_network=0 + if ! sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q "^lxc.network.type = veth" + then + lxc_network=1 # Si la ligne de la config réseau est absente, c'est une erreur. + check_repair=1 + if sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q ".*lxc.network.type" + then # Si la ligne est incorrecte, elle est corrigée. + sudo sed -i "s/.*lxc.network.type.*/lxc.network.type = veth/g" /var/lib/lxc/$LXC_NAME/config + else # Sinon elle est ajoutée. + echo "lxc.network.type = veth" | sudo tee -a /var/lib/lxc/$LXC_NAME/config + fi fi - fi - if ! sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q "^lxc.network.flags = up"; then - lxc_network=1 - check_repair=1 - if sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q ".*lxc.network.flags"; then - sudo sed -i "s/.*lxc.network.flags.*/lxc.network.flags = up/g" /var/lib/lxc/$LXC_NAME/config + if ! sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q "^lxc.network.flags = up" + then + lxc_network=1 + check_repair=1 + if sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q ".*lxc.network.flags" + then + sudo sed -i "s/.*lxc.network.flags.*/lxc.network.flags = up/g" /var/lib/lxc/$LXC_NAME/config + else + echo "lxc.network.flags = up" | sudo tee -a /var/lib/lxc/$LXC_NAME/config + fi + fi + if ! sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q "^lxc.network.link = $LXC_BRIDGE" + then + lxc_network=1 + check_repair=1 + if sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q ".*lxc.network.link" + then + sudo sed -i "s/.*lxc.network.link.*/lxc.network.link = $LXC_BRIDGE" /var/lib/lxc/$LXC_NAME/config + else + echo "lxc.network.link = $LXC_BRIDGE" | sudo tee -a /var/lib/lxc/$LXC_NAME/config + fi + fi + if ! sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q "^lxc.network.name = eth0" + then + lxc_network=1 + check_repair=1 + if sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q ".*lxc.network.name" + then + sudo sed -i "s/.*lxc.network.name.*/lxc.network.name = eth0/g" /var/lib/lxc/$LXC_NAME/config + else + echo "lxc.network.name = eth0" | sudo tee -a /var/lib/lxc/$LXC_NAME/config + fi + fi + if ! sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q "^lxc.network.veth.pair = $LXC_NAME" + then + lxc_network=1 + check_repair=1 + if sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q ".*lxc.network.veth.pair" + then + sudo sed -i "s/.*lxc.network.veth.pair.*/lxc.network.veth.pair = $LXC_NAME/g" /var/lib/lxc/$LXC_NAME/config + else + echo "lxc.network.veth.pair = $LXC_NAME" | sudo tee -a /var/lib/lxc/$LXC_NAME/config + fi + fi + if ! sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q "^lxc.network.hwaddr = 00:FF:AA:00:00:01" + then + lxc_network=1 + check_repair=1 + if sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q ".*lxc.network.hwaddr" + then + sudo sed -i "s/.*lxc.network.hwaddr.*/lxc.network.hwaddr = 00:FF:AA:00:00:01/g" /var/lib/lxc/$LXC_NAME/config + else + echo "lxc.network.hwaddr = 00:FF:AA:00:00:01" | sudo tee -a /var/lib/lxc/$LXC_NAME/config + fi + fi + if [ $lxc_network -eq 1 ] + then + echo -e "\e[91mLa configuration réseau LXC du conteneur est incorrecte et a été corrigée.\e[0m" else - echo "lxc.network.flags = up" | sudo tee -a /var/lib/lxc/$LXC_NAME/config + echo -e "\e[92mLa configuration réseau LXC du conteneur est correcte.\e[0m" fi - fi - if ! sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q "^lxc.network.link = $LXC_BRIDGE"; then - lxc_network=1 - check_repair=1 - if sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q ".*lxc.network.link"; then - sudo sed -i "s/.*lxc.network.link.*/lxc.network.link = $LXC_BRIDGE" /var/lib/lxc/$LXC_NAME/config - else - echo "lxc.network.link = $LXC_BRIDGE" | sudo tee -a /var/lib/lxc/$LXC_NAME/config - fi - fi - if ! sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q "^lxc.network.name = eth0"; then - lxc_network=1 - check_repair=1 - if sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q ".*lxc.network.name"; then - sudo sed -i "s/.*lxc.network.name.*/lxc.network.name = eth0/g" /var/lib/lxc/$LXC_NAME/config - else - echo "lxc.network.name = eth0" | sudo tee -a /var/lib/lxc/$LXC_NAME/config - fi - fi - if ! sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q "^lxc.network.veth.pair = $LXC_NAME"; then - lxc_network=1 - check_repair=1 - if sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q ".*lxc.network.veth.pair"; then - sudo sed -i "s/.*lxc.network.veth.pair.*/lxc.network.veth.pair = $LXC_NAME/g" /var/lib/lxc/$LXC_NAME/config - else - echo "lxc.network.veth.pair = $LXC_NAME" | sudo tee -a /var/lib/lxc/$LXC_NAME/config - fi - fi - if ! sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q "^lxc.network.hwaddr = 00:FF:AA:00:00:01"; then - lxc_network=1 - check_repair=1 - if sudo cat /var/lib/lxc/$LXC_NAME/config | grep -q ".*lxc.network.hwaddr"; then - sudo sed -i "s/.*lxc.network.hwaddr.*/lxc.network.hwaddr = 00:FF:AA:00:00:01/g" /var/lib/lxc/$LXC_NAME/config - else - echo "lxc.network.hwaddr = 00:FF:AA:00:00:01" | sudo tee -a /var/lib/lxc/$LXC_NAME/config - fi - fi - if [ $lxc_network -eq 1 ]; then - echo -e "\e[91mLa configuration réseau LXC du conteneur est incorrecte et a été corrigée.\e[0m" - else - echo -e "\e[92mLa configuration réseau LXC du conteneur est correcte.\e[0m" - fi } touch "$script_dir/../pcheck.lock" # Met en place le lock de Package check @@ -236,66 +249,68 @@ 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 () { - echo | sudo tee /etc/network/interfaces.d/$LXC_BRIDGE < Test de l'accès internet depuis l'hôte:\e[0m" ping -q -c 2 yunohost.org > /dev/null 2>&1 if [ "$?" -ne 0 ]; then # En cas d'échec de connexion, tente de pinger un autre domaine pour être sûr - 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" + 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 + exit 1 + fi fi echo -e "\e[92mL'hôte dispose d'un accès à internet.\e[0m" ### Test le réseau du conteneur echo -e "\e[1m\n> Test de l'accès internet depuis le conteneur:\e[0m" CHECK_LXC_NET () { - sudo lxc-attach -n $LXC_NAME -- ping -q -c 2 yunohost.org > /dev/null 2>&1 - if [ "$?" -ne 0 ]; then # En cas d'échec de connexion, tente de pinger un autre domaine pour être sûr - sudo lxc-attach -n $LXC_NAME -- 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... - return 1 - fi - fi - return 0 + sudo lxc-attach -n $LXC_NAME -- ping -q -c 2 yunohost.org > /dev/null 2>&1 + if [ "$?" -ne 0 ]; then # En cas d'échec de connexion, tente de pinger un autre domaine pour être sûr + sudo lxc-attach -n $LXC_NAME -- 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... + return 1 + fi + fi + return 0 } + lxc_net=1 lxc_net_check=0 # Passe sur les différents tests while test "$lxc_net" -eq 1 # Boucle tant que la connexion internet du conteneur n'est pas réparée. do - REBOOT_CONTENEUR + REBOOT_CONTENEUR sleep 3 - sudo lxc-ls -f + sudo lxc-ls -f CHECK_LXC_NET lxc_net=$? - if [ "$lxc_net" -eq 1 ]; then - if [ "$lxc_net_check" -eq 4 ] - then + if [ "$lxc_net" -eq 1 ]; then + 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" + echo -e "\e[91mLe conteneur LXC n'accède pas à internet...\e[0m" check_repair=1 - if [ "$lxc_net_check" -eq 0 ] - then - # Test la présence du fichier de config du kernel - lxc_net_check=1 - if ! test -e /etc/sysctl.d/lxc_pchecker.conf - then - echo -e "\e[91mLe fichier de configuration du kernel pour l'ip forwarding est introuvable.\nIl va être recréé.\e[0m" - echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/lxc_pchecker.conf - sudo sysctl -p /etc/sysctl.d/lxc_pchecker.conf - continue - else - echo -e "\e[92mLe fichier de configuration du kernel pour l'ip forwarding est présent.\e[0m" - fi - fi - if [ "$lxc_net_check" -eq 1 ] - then - # Test l'ip forwarding - lxc_net_check=2 - if ! sudo sysctl -a | grep -q "net.ipv4.ip_forward = " || [ $(sudo sysctl -n net.ipv4.ip_forward) -ne 1 ] - then - echo -e "\e[91mL'ip forwarding n'est pas activé. Correction en cours...\e[0m" - echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/lxc_pchecker.conf - sudo sysctl -p /etc/sysctl.d/lxc_pchecker.conf - continue - else - echo -e "\e[92mL'ip forwarding est activé.\e[0m" - fi - fi - if [ "$lxc_net_check" -eq 2 ] - then - # Vérifie la config réseau LXC du conteneur - lxc_net_check=3 - LXC_NETWORK_CONFIG - fi - if [ "$lxc_net_check" -eq 3 ] - then - lxc_net_check=4 - # Vérifie la config réseau LXC à l'intérieur du conteneur - if ! sudo test -e /var/lib/lxc/$LXC_NAME/rootfs/etc/network/interfaces - then - echo -e "\e[91mLe fichier network/interfaces du conteneur est introuvable.\nIl va être recréé.\e[0m" - else - echo -e "\e[92mLe fichier network/interfaces du conteneur est présent.\nMais il va être réécrit par précaution.\e[0m" - fi - echo -e "auto lo\niface lo inet loopback\nauto eth0\niface eth0 inet static\n\taddress $PLAGE_IP.2/24\n\tgateway $PLAGE_IP.1" | sudo tee /var/lib/lxc/$LXC_NAME/rootfs/etc/network/interfaces - fi - else - echo -e "\e[92mLe conteneur dispose d'un accès à internet.\e[0m" - fi + if [ "$lxc_net_check" -eq 0 ] + then + # Test la présence du fichier de config du kernel + lxc_net_check=1 + if ! test -e /etc/sysctl.d/lxc_pchecker.conf + then + echo -e "\e[91mLe fichier de configuration du kernel pour l'ip forwarding est introuvable.\nIl va être recréé.\e[0m" + echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/lxc_pchecker.conf + sudo sysctl -p /etc/sysctl.d/lxc_pchecker.conf + continue + else + echo -e "\e[92mLe fichier de configuration du kernel pour l'ip forwarding est présent.\e[0m" + fi + fi + if [ "$lxc_net_check" -eq 1 ] + then + # Test l'ip forwarding + lxc_net_check=2 + if ! sudo sysctl -a | grep -q "net.ipv4.ip_forward = " || [ $(sudo sysctl -n net.ipv4.ip_forward) -ne 1 ] + then + echo -e "\e[91mL'ip forwarding n'est pas activé. Correction en cours...\e[0m" + echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/lxc_pchecker.conf + sudo sysctl -p /etc/sysctl.d/lxc_pchecker.conf + continue + else + echo -e "\e[92mL'ip forwarding est activé.\e[0m" + fi + fi + if [ "$lxc_net_check" -eq 2 ] + then + # Vérifie la config réseau LXC du conteneur + lxc_net_check=3 + LXC_NETWORK_CONFIG + fi + if [ "$lxc_net_check" -eq 3 ] + then + lxc_net_check=4 + # Vérifie la config réseau LXC à l'intérieur du conteneur + if ! sudo test -e /var/lib/lxc/$LXC_NAME/rootfs/etc/network/interfaces + then + echo -e "\e[91mLe fichier network/interfaces du conteneur est introuvable.\nIl va être recréé.\e[0m" + else + echo -e "\e[92mLe fichier network/interfaces du conteneur est présent.\nMais il va être réécrit par précaution.\e[0m" + fi + echo -e "auto lo\niface lo inet loopback\nauto eth0\niface eth0 inet static\n\taddress $PLAGE_IP.2/24\n\tgateway $PLAGE_IP.1" | sudo tee /var/lib/lxc/$LXC_NAME/rootfs/etc/network/interfaces + fi + else + echo -e "\e[92mLe conteneur dispose d'un accès à internet.\e[0m" + fi done @@ -438,40 +454,40 @@ sudo lxc-ls -f sleep 3 ssh $ARG_SSH $LXC_NAME "exit 0" # Test une connexion ssh if [ "$?" -eq 0 ]; then - echo -e "\e[92mLa connexion ssh est fonctionnelle.\e[0m" + echo -e "\e[92mLa connexion ssh est fonctionnelle.\e[0m" else - echo -e "\e[91mÉchec de la connexion ssh. Reconfiguration de l'accès ssh.\e[0m" + echo -e "\e[91mÉchec de la connexion ssh. Reconfiguration de l'accès ssh.\e[0m" check_repair=1 ssh $ARG_SSH $LXC_NAME -v "exit 0" # Répète la connexion ssh pour afficher l'erreur. - echo "Suppression de la config ssh actuelle pour le conteneur." - rm -f $HOME/.ssh/$LXC_NAME $HOME/.ssh/$LXC_NAME.pub + echo "Suppression de la config ssh actuelle pour le conteneur." + rm -f $HOME/.ssh/$LXC_NAME $HOME/.ssh/$LXC_NAME.pub - BEGIN_LINE=$(cat $HOME/.ssh/config | grep -n "# ssh $LXC_NAME" | cut -d':' -f 1) - sed -i "$BEGIN_LINE,/^IdentityFile/d" $HOME/.ssh/config + BEGIN_LINE=$(cat $HOME/.ssh/config | grep -n "# ssh $LXC_NAME" | cut -d':' -f 1) + sed -i "$BEGIN_LINE,/^IdentityFile/d" $HOME/.ssh/config - ssh-keygen -f "$HOME/.ssh/known_hosts" -R $PLAGE_IP.2 + ssh-keygen -f "$HOME/.ssh/known_hosts" -R $PLAGE_IP.2 - echo "Création de la clé ssh." - ssh-keygen -t dsa -f $HOME/.ssh/$LXC_NAME -P '' - sudo cp $HOME/.ssh/$LXC_NAME.pub /var/lib/lxc/$LXC_NAME/rootfs/home/pchecker/.ssh/authorized_keys - sudo lxc-attach -n $LXC_NAME -- chown pchecker: -R /home/pchecker/.ssh - echo "Ajout de la config ssh." + echo "Création de la clé ssh." + ssh-keygen -t dsa -f $HOME/.ssh/$LXC_NAME -P '' + sudo cp $HOME/.ssh/$LXC_NAME.pub /var/lib/lxc/$LXC_NAME/rootfs/home/pchecker/.ssh/authorized_keys + sudo lxc-attach -n $LXC_NAME -- chown pchecker: -R /home/pchecker/.ssh + echo "Ajout de la config ssh." - echo | tee -a $HOME/.ssh/config <> ~/.ssh/known_hosts # Récupère la clé publique pour l'ajouter au known_hosts - ssh $ARG_SSH $LXC_NAME -v "exit 0" > /dev/null # Test à nouveau la connexion ssh - if [ "$?" -eq 0 ]; then - echo -e "\e[92mLa connexion ssh est retablie.\e[0m" - else - echo -e "\e[91mÉchec de la réparation de la connexion ssh.\nIl est nécessaire de détruire et de reconstruire le conteneur.\e[0m" - fi + ssh-keyscan -H 10.1.4.2 >> ~/.ssh/known_hosts # Récupère la clé publique pour l'ajouter au known_hosts + ssh $ARG_SSH $LXC_NAME -v "exit 0" > /dev/null # Test à nouveau la connexion ssh + if [ "$?" -eq 0 ]; then + echo -e "\e[92mLa connexion ssh est retablie.\e[0m" + else + echo -e "\e[91mÉchec de la réparation de la connexion ssh.\nIl est nécessaire de détruire et de reconstruire le conteneur.\e[0m" + fi fi @@ -484,7 +500,6 @@ if [ "$?" -ne 0 ]; then # Si la commande échoue, il y a un problème avec Yunoh exit 1 else echo -e "\e[92mYunohost est installé correctement.\e[0m" - fi STOP_CONTAINER