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