| 1 | #!/bin/bash | 
|---|
| 2 |  | 
|---|
| 3 | #/** | 
|---|
| 4 | #@file    opengnsys_uninstall.sh | 
|---|
| 5 | #@brief   Script de desinstalación de OpenGnsys. | 
|---|
| 6 | #@warning No se elimina el directorio de imágenes, ni se desinstalan otros programas. | 
|---|
| 7 | #@version 0.10 - Primera prueba de desinstalación. | 
|---|
| 8 | #@author  Ramón Gómez - ETSII Univ. Sevilla | 
|---|
| 9 | #@date    2010/10/28 | 
|---|
| 10 | #@version 1.0 - Eliminar servicios de OpenGnSys. | 
|---|
| 11 | #@author  Ramón Gómez - ETSII Univ. Sevilla | 
|---|
| 12 | #@date    2011/03/02 | 
|---|
| 13 | #@version 1.0.2 - Información de desinstalación y correcciones. | 
|---|
| 14 | #@author  Ramón Gómez - ETSII Univ. Sevilla | 
|---|
| 15 | #@date    2011/12/22 | 
|---|
| 16 | #@version 1.0.4 - Compatibilidad con otras distribuciones y auto configuración de acceso a BD | 
|---|
| 17 | #@author  Ramón Gómez - ETSII Univ. Sevilla | 
|---|
| 18 | #@date    2012/03/28 | 
|---|
| 19 | #@version 1.0.5 - Usar las mismas variables que el script de instalación. | 
|---|
| 20 | #@author  Ramón Gómez - ETSII Univ. Sevilla | 
|---|
| 21 | #@date    2013/01/09 | 
|---|
| 22 | #@version 1.1.0 - Solicitar confirmación para desinstalar. | 
|---|
| 23 | #@author  Ramón Gómez - ETSII Univ. Sevilla | 
|---|
| 24 | #@date    2017/06/27 | 
|---|
| 25 | #*/ ## | 
|---|
| 26 |  | 
|---|
| 27 |  | 
|---|
| 28 | ####  AVISO: Editar configuración de acceso. | 
|---|
| 29 | ####  WARNING: Edit access configuration. | 
|---|
| 30 | MYSQL_ROOT_PASSWORD="passwordroot"      # Clave de root de MySQL | 
|---|
| 31 | OPENGNSYS_DATABASE="ogAdmBD"            # Base de datos de administración | 
|---|
| 32 | OPENGNSYS_DB_USER="usuog"               # Usuario de acceso a la base de datos | 
|---|
| 33 |  | 
|---|
| 34 |  | 
|---|
| 35 | ####  AVISO: NO EDITAR variables de configuración. | 
|---|
| 36 | ####  WARNING: DO NOT EDIT configuration variables. | 
|---|
| 37 | OPENGNSYS="/opt/opengnsys"              # Directorio de OpenGnsys | 
|---|
| 38 | OGIMG="images"                          # Directorio de imágenes del repositorio | 
|---|
| 39 | OPENGNSYS_CLIENT_USER="opengnsys"       # Usuario Samba | 
|---|
| 40 | OPENGNSYS_OLDDATABASE="ogBDAdmin"       # Antigua base de datos | 
|---|
| 41 | MYCNF=/tmp/.my.cnf.$$                   # Fichero temporal con credenciales de acceso a la BD. | 
|---|
| 42 | TFTPDIR=$(readlink $OPENGNSYS/tftpboot 2>/dev/null)     # Directorio de PXE/TFTP | 
|---|
| 43 |  | 
|---|
| 44 |  | 
|---|
| 45 | # Sólo ejecutable por usuario root | 
|---|
| 46 | if [ "$(whoami)" != 'root' ]; then | 
|---|
| 47 | echo "ERROR: this program must run under root privileges!!" | 
|---|
| 48 | exit 1 | 
|---|
| 49 | fi | 
|---|
| 50 |  | 
|---|
| 51 | # Solicitar confirmación para la desinstalación de OpenGnsys. | 
|---|
| 52 | read -rp "WARNING: Files under $OPENGNSYS directory will be removed. Continue to uninstall? (y/n): " REPLY | 
|---|
| 53 | if [ "${REPLY^^}" != "Y" ]; then | 
|---|
| 54 | echo "Operation cancelled." | 
|---|
| 55 | exit 0 | 
|---|
| 56 | fi | 
|---|
| 57 |  | 
|---|
| 58 |  | 
|---|
| 59 | # Parar servicio. | 
|---|
| 60 | echo "Uninstalling OpenGnsys services." | 
|---|
| 61 | if [ -x /etc/init.d/opengnsys ]; then | 
|---|
| 62 | /etc/init.d/opengnsys stop | 
|---|
| 63 | if [ -n "$(which update-rc.d 2>/dev/null)" ]; then | 
|---|
| 64 | update-rc.d -f opengnsys remove | 
|---|
| 65 | else | 
|---|
| 66 | chkconfig --del opengnsys | 
|---|
| 67 | fi | 
|---|
| 68 | fi | 
|---|
| 69 | # Comprobar acceso a la bases de datos. | 
|---|
| 70 | echo "Erasing OpenGnsys database." | 
|---|
| 71 | DROP=1 | 
|---|
| 72 | if ! mysql -u root -p"$MYSQL_ROOT_PASSWORD" <<<"quit" 2>/dev/null; then | 
|---|
| 73 | stty -echo | 
|---|
| 74 | read -rp "- Please, insert MySQL root password: " MYSQL_ROOT_PASSWORD | 
|---|
| 75 | echo "" | 
|---|
| 76 | stty echo | 
|---|
| 77 | if ! mysql -u root -p"$MYSQL_ROOT_PASSWORD" <<<"quit" 2>/dev/null; then | 
|---|
| 78 | DROP=0 | 
|---|
| 79 | echo "Warning: database not erased." | 
|---|
| 80 | fi | 
|---|
| 81 | fi | 
|---|
| 82 | if test $DROP; then | 
|---|
| 83 | # Componer fichero temporal con credenciales de conexión a la base de datos. | 
|---|
| 84 | touch $MYCNF | 
|---|
| 85 | chmod 600 $MYCNF | 
|---|
| 86 | cat << EOT > $MYCNF | 
|---|
| 87 | [client] | 
|---|
| 88 | user=root | 
|---|
| 89 | password=$MYSQL_ROOT_PASSWORD | 
|---|
| 90 | EOT | 
|---|
| 91 | # Borrar fichero de credenciales si se corta el proceso de acceso a la BD. | 
|---|
| 92 | trap "rm -f $MYCNF" 0 1 2 3 6 9 15 | 
|---|
| 93 | # Eliminar bases de datos. | 
|---|
| 94 | mysql --defaults-extra-file=$MYCNF 2> /dev/null << EOT | 
|---|
| 95 | DROP DATABASE IF EXISTS $OPENGNSYS_OLDDATABASE; | 
|---|
| 96 | DROP DATABASE IF EXISTS $OPENGNSYS_DATABASE; | 
|---|
| 97 | DROP USER '$OPENGNSYS_DB_USER'; | 
|---|
| 98 | DROP USER '$OPENGNSYS_DB_USER'@'localhost'; | 
|---|
| 99 | EOT | 
|---|
| 100 | # Borrar el fichero temporal de credenciales. | 
|---|
| 101 | rm -f $MYCNF | 
|---|
| 102 | fi | 
|---|
| 103 | # Quitar configuración específica de Apache. | 
|---|
| 104 | [ -n "$(which a2dissite 2>/dev/null)" ] && a2dissite opengnsys | 
|---|
| 105 | rm -f /etc/{apache2/{sites-available,sites-enabled},httpd/conf.d}/opengnsys* | 
|---|
| 106 | for serv in apache2 httpd; do | 
|---|
| 107 | [ -x /etc/init.d/$serv ] && /etc/init.d/$serv reload | 
|---|
| 108 | done | 
|---|
| 109 | # Eliminar ficheros. | 
|---|
| 110 | echo "Deleting OpenGnsys files." | 
|---|
| 111 | for dir in $OPENGNSYS/*; do | 
|---|
| 112 | if [ "$dir" != "$OPENGNSYS/$OGIMG" ]; then | 
|---|
| 113 | rm -fr "$dir" | 
|---|
| 114 | fi | 
|---|
| 115 | done | 
|---|
| 116 | rm -f /etc/init.d/opengnsys /etc/default/opengnsys /var/log/opengnsys | 
|---|
| 117 | rm -f /etc/cron.d/{opengnsys,torrentcreator,torrenttracker} | 
|---|
| 118 | # Elminar recursos de OpenGnsys en Samba. | 
|---|
| 119 | rm -f /etc/samba/smb-og.conf | 
|---|
| 120 | perl -ni -e "print unless /smb-og.conf/" /etc/samba/smb.conf | 
|---|
| 121 | for serv in smbd smb ; do | 
|---|
| 122 | [ -x /etc/init.d/$serv ] && /etc/init.d/$serv reload | 
|---|
| 123 | done | 
|---|
| 124 | # Eliminar usuario de OpenGnsys. | 
|---|
| 125 | smbpasswd -x $OPENGNSYS_CLIENT_USER | 
|---|
| 126 | userdel $OPENGNSYS_CLIENT_USER | 
|---|
| 127 | # Tareas manuales a realizar después de desinstalar. | 
|---|
| 128 | echo "Manual tasks:" | 
|---|
| 129 | echo "- You may stop or uninstall manually all other services" | 
|---|
| 130 | echo "     (DHCP, PXE, TFTP, NFS/Samba, Apache, MySQL)." | 
|---|
| 131 | echo "- Delete repository directory \"$OPENGNSYS/$OGIMG\"" | 
|---|
| 132 | [ -n "$TFTPDIR" ] && echo "- Delete PXE configuration directory \"$TFTPDIR\"" | 
|---|
| 133 |  | 
|---|