summaryrefslogtreecommitdiffstats
path: root/installer/opengnsys_uninstall.sh
blob: e0df8f8add798faecd04f136b862e23b23b4e208 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#!/bin/bash

#/**
#@file    opengnsys_uninstall.sh
#@brief   Script de desinstalación de OpenGnsys.
#@warning No se elimina el directorio de imágenes, ni se desinstalan otros programas.
#@version 0.10 - Primera prueba de desinstalación.
#@author  Ramón Gómez - ETSII Univ. Sevilla
#@date    2010/10/28
#@version 1.0 - Eliminar servicios de OpenGnSys.
#@author  Ramón Gómez - ETSII Univ. Sevilla
#@date    2011/03/02
#@version 1.0.2 - Información de desinstalación y correcciones.
#@author  Ramón Gómez - ETSII Univ. Sevilla
#@date    2011/12/22
#@version 1.0.4 - Compatibilidad con otras distribuciones y auto configuración de acceso a BD
#@author  Ramón Gómez - ETSII Univ. Sevilla
#@date    2012/03/28
#@version 1.0.5 - Usar las mismas variables que el script de instalación.
#@author  Ramón Gómez - ETSII Univ. Sevilla
#@date    2013/01/09
#@version 1.1.0 - Solicitar confirmación para desinstalar.
#@author  Ramón Gómez - ETSII Univ. Sevilla
#@date    2017/06/27
#*/ ##


####  AVISO: Editar configuración de acceso.
####  WARNING: Edit access configuration.
MYSQL_ROOT_PASSWORD="passwordroot"	# Clave de root de MySQL
OPENGNSYS_DATABASE="ogAdmBD"		# Base de datos de administración
OPENGNSYS_DB_USER="usuog"		# Usuario de acceso a la base de datos


####  AVISO: NO EDITAR variables de configuración.
####  WARNING: DO NOT EDIT configuration variables.
OPENGNSYS="/opt/opengnsys"		# Directorio de OpenGnsys
OGIMG="images"				# Directorio de imágenes del repositorio
OPENGNSYS_CLIENT_USER="opengnsys"	# Usuario Samba
OPENGNSYS_OLDDATABASE="ogBDAdmin"	# Antigua base de datos
MYCNF=/tmp/.my.cnf.$$			# Fichero temporal con credenciales de acceso a la BD.
TFTPDIR=$(readlink $OPENGNSYS/tftpboot 2>/dev/null)	# Directorio de PXE/TFTP


# Sólo ejecutable por usuario root
if [ "$(whoami)" != 'root' ]; then
    echo "ERROR: this program must run under root privileges!!"
    exit 1
fi

# Solicitar confirmación para la desinstalación de OpenGnsys.
read -rp "WARNING: Files under $OPENGNSYS directory will be removed. Continue to uninstall? (y/n): " REPLY
if [ "${REPLY^^}" != "Y" ]; then
    echo "Operation cancelled."
    exit 0
fi


# Parar servicio.
echo "Uninstalling OpenGnsys services."
if [ -x /etc/init.d/opengnsys ]; then
    /etc/init.d/opengnsys stop
    if [ -n "$(which update-rc.d 2>/dev/null)" ]; then
        update-rc.d -f opengnsys remove
    else
	chkconfig --del opengnsys
    fi
fi
# Comprobar acceso a la bases de datos.
echo "Erasing OpenGnsys database."
DROP=1
if ! mysql -u root -p"$MYSQL_ROOT_PASSWORD" <<<"quit" 2>/dev/null; then
    stty -echo
    read -rp "- Please, insert MySQL root password: " MYSQL_ROOT_PASSWORD
    echo ""
    stty echo
    if ! mysql -u root -p"$MYSQL_ROOT_PASSWORD" <<<"quit" 2>/dev/null; then
	DROP=0
	echo "Warning: database not erased."
    fi
fi
if test $DROP; then
    # Componer fichero temporal con credenciales de conexión a la base de datos.
    touch $MYCNF
    chmod 600 $MYCNF
    cat << EOT > $MYCNF
[client]
user=root
password=$MYSQL_ROOT_PASSWORD
EOT
    # Borrar fichero de credenciales si se corta el proceso de acceso a la BD.
    trap "rm -f $MYCNF" 0 1 2 3 6 9 15
    # Eliminar bases de datos.
    mysql --defaults-extra-file=$MYCNF 2> /dev/null << EOT
DROP DATABASE IF EXISTS $OPENGNSYS_OLDDATABASE;
DROP DATABASE IF EXISTS $OPENGNSYS_DATABASE;
DROP USER '$OPENGNSYS_DB_USER';
DROP USER '$OPENGNSYS_DB_USER'@'localhost';
EOT
    # Borrar el fichero temporal de credenciales.
    rm -f $MYCNF
fi
# Eliminar plantilla MySQL.
rm -f /etc/{mysql/mysql.conf.d,my.conf.d}/mysqld-og.cnf
# Quitar configuración específica de Apache.
[ -n "$(which a2dissite 2>/dev/null)" ] && a2dissite opengnsys
rm -f /etc/{apache2/{sites-available,sites-enabled},httpd/conf.d}/opengnsys*
for serv in apache2 httpd; do
    [ -x /etc/init.d/$serv ] && /etc/init.d/$serv reload
done
# Eliminar ficheros.
echo "Deleting OpenGnsys files."
for dir in $OPENGNSYS/*; do
    if [ "$dir" != "$OPENGNSYS/$OGIMG" ]; then
        rm -fr "$dir"
    fi
done
rm -f /etc/init.d/opengnsys /etc/default/opengnsys /var/log/opengnsys
rm -f /etc/cron.d/{opengnsys,torrentcreator,torrenttracker}
rm -f /etc/logrotate.d/opengnsys*
# Elminar recursos de OpenGnsys en Samba.
rm -f /etc/samba/smb-og.conf
perl -ni -e "print unless /smb-og.conf/" /etc/samba/smb.conf
for serv in smbd smb ; do
    [ -x /etc/init.d/$serv ] && /etc/init.d/$serv reload
done
# Eliminar usuario de OpenGnsys.
smbpasswd -x $OPENGNSYS_CLIENT_USER
userdel $OPENGNSYS_CLIENT_USER
# Tareas manuales a realizar después de desinstalar.
echo "Manual tasks:"
echo "- You may stop or uninstall manually all other services"
echo "     (DHCP, PXE, TFTP, NFS/Samba, Apache, MySQL)."
echo "- Delete repository directory \"$OPENGNSYS/$OGIMG\""
[ -n "$TFTPDIR" ] && echo "- Delete PXE configuration directory \"$TFTPDIR\""