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\""
|