|
@@ -117,6 +117,9 @@ comprobarError() {
|
|
|
807)
|
|
|
error="$type $codeNum:\t'firewall-cmd' no instalado.\n"
|
|
|
;;
|
|
|
+ 808)
|
|
|
+ error="$type $codeNum:\t'tput' no instalado.\n"
|
|
|
+ ;;
|
|
|
900)
|
|
|
error="$type $codeNum:\tError interno (habilitar servicio).\n"
|
|
|
;;
|
|
@@ -205,6 +208,9 @@ comprobarDependencias() {
|
|
|
# Comprobamos hostnamectl
|
|
|
which hostnamectl > /dev/null 2>&1
|
|
|
comprobarError $? 802
|
|
|
+ # Comprobamos tput
|
|
|
+ which tput > /dev/null 2>&1
|
|
|
+ comprobarError $? 808
|
|
|
if [ $debianOS = true ];then
|
|
|
# Comprobamos apt-get
|
|
|
which apt-get > /dev/null 2>&1
|
|
@@ -244,6 +250,8 @@ inicializarVariables() {
|
|
|
mediaWikiOn=false
|
|
|
moodleOn=false
|
|
|
actualizacionesOn=false
|
|
|
+ progreso=0
|
|
|
+ progresoTotal=0
|
|
|
}
|
|
|
|
|
|
instalacionExpress() {
|
|
@@ -253,22 +261,25 @@ instalacionExpress() {
|
|
|
mediaWikiOn=true
|
|
|
moodleOn=true
|
|
|
actualizacionesOn=true
|
|
|
+ progresoTotal=15
|
|
|
# Preguntas mínimas
|
|
|
establecerFQDN
|
|
|
leerSQLPasswd
|
|
|
}
|
|
|
|
|
|
mostrarBienvenida() {
|
|
|
+ ANCHO=$(tput cols)
|
|
|
+ ALTO=$(tput lines)
|
|
|
if [ $debianOS = false ] && [ $rhelOS = false ]; then
|
|
|
- whiptail --title "ERROR S.O. NO SOPORTADO" --msgbox "Este script automatiza la creación de una web MediaWiki SOLO para distribuciones Linux de la familia Debian (Ubuntu, Linux Mint, ...) y de la familia Red-Hat (CentOS, Fedora, ...).\n\nInformación del sistema:\nOS: $OS $DIST $REV\n$HDInfo" 20 70 --ok-button "Salir"
|
|
|
+ whiptail --title "ERROR S.O. NO SOPORTADO" --msgbox "Este script automatiza la creación de una web MediaWiki SOLO para distribuciones Linux de la familia Debian (Ubuntu, Linux Mint, ...) y de la familia Red-Hat (CentOS, Fedora, ...).\n\nInformación del sistema:\nOS: $OS $DIST $REV\n$HDInfo" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Salir"
|
|
|
exit 1
|
|
|
fi
|
|
|
- whiptail --title "INSTALACION MEDIAWIKI" --yesno "Este script automatiza completamente la instalación de una wiki.\nPara ello instala un servidor LAMP, el software MediaWiki y lo configura todo.\n\nInformación del sistema:\nOS: $OS $DIST $REV\n$HDInfo" 20 70 --yes-button "Continuar" --no-button "Salir"
|
|
|
+ whiptail --title "INSTALACION MEDIAWIKI" --yesno "Este script automatiza completamente la instalación de una wiki.\nPara ello instala un servidor LAMP, el software MediaWiki y lo configura todo.\n\nInformación del sistema:\nOS: $OS $DIST $REV\n$HDInfo" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --yes-button "Continuar" --no-button "Salir"
|
|
|
comprobarError $? 1
|
|
|
}
|
|
|
|
|
|
mostrarExpress() {
|
|
|
- express=$(whiptail --title "INSTALACION EXPRESS" --radiolist "<ESPACIO>: seleccionar <TAB>: cambiar <FLECHAS>: moverse\n\nLa instalación express instala Apache2, MariaDB, PHP-7, Let's Encrypt, MediaWiki, Moodle y actualizaciones automáticas.\nSeleccione el tipo de instalación que desee:" 20 70 2 \
|
|
|
+ express=$(whiptail --title "INSTALACION EXPRESS" --radiolist "<ESPACIO>: seleccionar <TAB>: cambiar <FLECHAS>: moverse\n\nLa instalación express instala Apache2, MariaDB, PHP-7, Let's Encrypt, MediaWiki, Moodle y actualizaciones automáticas.\nSeleccione el tipo de instalación que desee:" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) 2 \
|
|
|
"Express" "Instalación rápida" ON \
|
|
|
"Avanzada" "Permite escoger todas las opciones disponibles" OFF \
|
|
|
--ok-button "Continuar" --cancel-button "Salir" 3>&1 1>&2 2>&3)
|
|
@@ -288,7 +299,7 @@ mostrarExpress() {
|
|
|
}
|
|
|
|
|
|
mostrarAvanzada() {
|
|
|
- componentes=$(whiptail --title "INSTALACION AVANZADA" --checklist "<ESPACIO>: seleccionar <TAB>: cambiar <FLECHAS>: moverse\n\nEscoge los componentes que quieres instalar:" 20 70 7 \
|
|
|
+ componentes=$(whiptail --title "INSTALACION AVANZADA" --checklist "<ESPACIO>: seleccionar <TAB>: cambiar <FLECHAS>: moverse\n\nEscoge los componentes que quieres instalar:" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) 7 \
|
|
|
"WebServer" "Instalar servidor web http/https" ON \
|
|
|
"Database" "Instalar una base de datos SQL" ON \
|
|
|
"PHP" "Instala PHP7" ON \
|
|
@@ -303,34 +314,42 @@ mostrarAvanzada() {
|
|
|
case $i in
|
|
|
\"WebServer\")
|
|
|
mostrarWebServer
|
|
|
+ progresoTotal=$((progresoTotal + 2))
|
|
|
;;
|
|
|
\"Database\")
|
|
|
mostrarDatabase
|
|
|
+ progresoTotal=$((progresoTotal + 2))
|
|
|
;;
|
|
|
\"PHP\")
|
|
|
phpOn=true
|
|
|
+ progresoTotal=$((progresoTotal + 2))
|
|
|
;;
|
|
|
\"SSL/TLS\")
|
|
|
# 2 Opciones: Let's Encrypt o Autofirmado
|
|
|
+ progresoTotal=$((progresoTotal + 2))
|
|
|
;;
|
|
|
\"MediaWiki\")
|
|
|
mediaWikiOn=true
|
|
|
+ progresoTotal=$((progresoTotal + 2))
|
|
|
;;
|
|
|
\"Moodle\")
|
|
|
moodleOn=true
|
|
|
+ progresoTotal=$((progresoTotal + 2))
|
|
|
;;
|
|
|
\"Actualizaciones\")
|
|
|
actualizacionesOn=true
|
|
|
+ progresoTotal=$((progresoTotal + 1))
|
|
|
;;
|
|
|
*)
|
|
|
comprobarError 1 3
|
|
|
;;
|
|
|
esac
|
|
|
done
|
|
|
+ progresoTotal=$((progresoTotal + 2))
|
|
|
}
|
|
|
|
|
|
mostrarWebServer() {
|
|
|
- webServer=$(whiptail --title "SERVIDOR WEB" --radiolist "<ESPACIO>: seleccionar <TAB>: cambiar <FLECHAS>: moverse\n\nEscoge el servidor web que quieres usar:" 20 70 2 \
|
|
|
+ webServer=$(whiptail --title "SERVIDOR WEB" --radiolist "<ESPACIO>: seleccionar <TAB>: cambiar <FLECHAS>: moverse\n\nEscoge el servidor web que quieres usar:" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) 2 \
|
|
|
"Apache" "Instalar el servidor web Apache2" ON \
|
|
|
"Nginx" "Instalar el servidor web Nginx" OFF \
|
|
|
--ok-button "Continuar" --cancel-button "Salir" 3>&1 1>&2 2>&3)
|
|
@@ -352,7 +371,7 @@ mostrarWebServer() {
|
|
|
|
|
|
establecerFQDN() {
|
|
|
while [ -z $hostname ]; do
|
|
|
- hostname=$(whiptail --title "FQDN" --inputbox "El nombre de dominio principal (FQDN) de este servidor es:\n"$(hostname)"\n\nQuieres cambiarlo por otro?" 20 70 --ok-button "Cambiar" --cancel-button "No Cambiar" 3>&1 1>&2 2>&3)
|
|
|
+ hostname=$(whiptail --title "FQDN" --inputbox "El nombre de dominio principal (FQDN) de este servidor es:\n"$(hostname)"\n\nQuieres cambiarlo por otro?" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Cambiar" --cancel-button "No Cambiar" 3>&1 1>&2 2>&3)
|
|
|
if [ $? -eq 0 ] && [ ! -z $hostname ]; then
|
|
|
hostnamectl set-hostname $hostname
|
|
|
else
|
|
@@ -391,7 +410,7 @@ instalarNginx() {
|
|
|
|
|
|
mostrarDatabase() {
|
|
|
if [ $debianOS = true ]; then
|
|
|
- database=$(whiptail --title "BASE DE DATOS" --radiolist "<ESPACIO>: seleccionar <TAB>: cambiar <FLECHAS>: moverse\n\nEscoge la base de datos que quieres usar:" 20 70 2 \
|
|
|
+ database=$(whiptail --title "BASE DE DATOS" --radiolist "<ESPACIO>: seleccionar <TAB>: cambiar <FLECHAS>: moverse\n\nEscoge la base de datos que quieres usar:" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) 2 \
|
|
|
"MySQL" "Instalar la base de datos MySQL (no uso comercial)" ON \
|
|
|
"MariaDB" "Instalar la base de datos MariaDB (fork de MySQL)" OFF \
|
|
|
--ok-button "Continuar" --cancel-button "Salir" 3>&1 1>&2 2>&3)
|
|
@@ -408,7 +427,7 @@ mostrarDatabase() {
|
|
|
;;
|
|
|
esac
|
|
|
elif [ $rhelOS = true ]; then
|
|
|
- whiptail --title "BASE DE DATOS" --yesno "Para su distribucion $OS $DIST $REV, sólo está disponible la base de datos MariaDB." 20 70 --yes-button "Continuar" --no-button "Salir"
|
|
|
+ whiptail --title "BASE DE DATOS" --yesno "Para su distribucion $OS $DIST $REV, sólo está disponible la base de datos MariaDB." $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --yes-button "Continuar" --no-button "Salir"
|
|
|
comprobarError $? 1
|
|
|
mariaDBOn=true
|
|
|
else
|
|
@@ -423,9 +442,9 @@ leerSQLPasswd() {
|
|
|
error=""
|
|
|
# Leemos la contreseña (stdin) y confirmamos
|
|
|
while [ $control = false ]; do
|
|
|
- sqlPasswd=$(whiptail --title "CONTRASEÑA SQL" --passwordbox "$error""Introduzca la contraseña para el usuario 'root' de la base de datos:" 20 70 --ok-button "Continuar" --nocancel 3>&1 1>&2 2>&3)
|
|
|
+ sqlPasswd=$(whiptail --title "CONTRASEÑA SQL" --passwordbox "$error""Introduzca la contraseña para el usuario 'root' de la base de datos:" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Continuar" --nocancel 3>&1 1>&2 2>&3)
|
|
|
comprobarError $? 1
|
|
|
- sqlPasswd2=$(whiptail --title "CONTRASEÑA SQL" --passwordbox "Confirme la contraseña:" 20 70 --ok-button "Continuar" --nocancel 3>&1 1>&2 2>&3)
|
|
|
+ sqlPasswd2=$(whiptail --title "CONTRASEÑA SQL" --passwordbox "Confirme la contraseña:" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Continuar" --nocancel 3>&1 1>&2 2>&3)
|
|
|
comprobarError $? 1
|
|
|
#printf "SQL Password 1: $sqlPasswd\n"
|
|
|
#printf "SQL Password 2: $sqlPasswd2\n"
|
|
@@ -562,38 +581,74 @@ mostrarExpress
|
|
|
# Servidor Web
|
|
|
if [ $apacheOn = true ]; then
|
|
|
printf "Instalando Web Server Apache..."
|
|
|
- instalarApache
|
|
|
+ {
|
|
|
+ printf "%s\n" $((100 * progreso / progresoTotal))
|
|
|
+ instalarApache
|
|
|
+ progreso=$((progreso + 1))
|
|
|
+ } > >(whiptail --gauge "Instalando Web Server Apache..." $((ALTO * 4 / 10)) $((ANCHO * 9 / 10)) $((100 * progreso / progresoTotal)))
|
|
|
printf " OK.\n"
|
|
|
elif [ $nginxOn = true ]; then
|
|
|
printf "Instalando Web Server Nginx..."
|
|
|
- instalarNginx
|
|
|
+ {
|
|
|
+ printf "%s\n" $((100 * progreso / progresoTotal))
|
|
|
+ instalarNginx
|
|
|
+ progreso=$((progreso + 1))
|
|
|
+ } > >(whiptail --gauge "Instalando Web Server Nginx..." $((ALTO * 4 / 10)) $((ANCHO * 9 / 10)) $((100 * progreso / progresoTotal)))
|
|
|
printf " OK.\n"
|
|
|
fi
|
|
|
# Base de Datos
|
|
|
if [ $mySQLOn = true ]; then
|
|
|
printf "Instalando Base de Datos MySQL..."
|
|
|
- instalarMySQL
|
|
|
+ {
|
|
|
+ printf "%s\n" $((100 * progreso / progresoTotal))
|
|
|
+ instalarMySQL
|
|
|
+ progreso=$((progreso + 1))
|
|
|
+ } > >(whiptail --gauge "Instalando Base de Datos MySQL..." $((ALTO * 4 / 10)) $((ANCHO * 9 / 10)) $((100 * progreso / progresoTotal)))
|
|
|
printf " OK.\n"
|
|
|
elif [ $mariaDBOn = true ]; then
|
|
|
printf "Instalando Base de Datos MariaDB..."
|
|
|
- instalarMariaDB
|
|
|
+ {
|
|
|
+ printf "%s\n" $((100 * progreso / progresoTotal))
|
|
|
+ instalarMariaDB
|
|
|
+ progreso=$((progreso + 1))
|
|
|
+ } > >(whiptail --gauge "Instalando Base de Datos MariaDB..." $((ALTO * 4 / 10)) $((ANCHO * 9 / 10)) $((100 * progreso / progresoTotal)))
|
|
|
printf " OK.\n"
|
|
|
fi
|
|
|
# PHP
|
|
|
if [ $phpOn = true ]; then
|
|
|
printf "Instalando PHP-7..."
|
|
|
+ {
|
|
|
+ printf "%s\n" $((100 * progreso / progresoTotal))
|
|
|
+ sleep 2
|
|
|
+ progreso=$((progreso + 1))
|
|
|
+ } > >(whiptail --gauge "Instalando PHP-7..." $((ALTO * 4 / 10)) $((ANCHO * 9 / 10)) $((100 * progreso / progresoTotal)))
|
|
|
printf " OK.\n"
|
|
|
fi
|
|
|
# SSL/TLS
|
|
|
# Falta por implementar
|
|
|
+ {
|
|
|
+ printf "%s\n" $((100 * progreso / progresoTotal))
|
|
|
+ sleep 2
|
|
|
+ progreso=$((progreso + 1))
|
|
|
+ } > >(whiptail --gauge "Instalando SSL/TLS..." $((ALTO * 4 / 10)) $((ANCHO * 9 / 10)) $((100 * progreso / progresoTotal)))
|
|
|
# MediaWiki
|
|
|
if [ $mediaWikiOn = true ]; then
|
|
|
printf "Instalando MediaWiki..."
|
|
|
+ {
|
|
|
+ printf "%s\n" $((100 * progreso / progresoTotal))
|
|
|
+ sleep 2
|
|
|
+ progreso=$((progreso + 1))
|
|
|
+ } > >(whiptail --gauge "Instalando MediaWiki..." $((ALTO * 4 / 10)) $((ANCHO * 9 / 10)) $((100 * progreso / progresoTotal)))
|
|
|
printf " OK.\n"
|
|
|
fi
|
|
|
# Moodle
|
|
|
if [ $moodleOn = true ]; then
|
|
|
printf "Instalando Moodle..."
|
|
|
+ {
|
|
|
+ printf "%s\n" $((100 * progreso / progresoTotal))
|
|
|
+ sleep 2
|
|
|
+ progreso=$((progreso + 1))
|
|
|
+ } > >(whiptail --gauge "Instalando Moodle..." $((ALTO * 4 / 10)) $((ANCHO * 9 / 10)) $((100 * progreso / progresoTotal)))
|
|
|
printf " OK.\n"
|
|
|
fi
|
|
|
|
|
@@ -603,44 +658,95 @@ mostrarExpress
|
|
|
# Configuración
|
|
|
# Configuración Apache
|
|
|
# Virtual Hosts
|
|
|
+ printf "Configurando Servidor Web..."
|
|
|
+ {
|
|
|
+ printf "%s\n" $((100 * progreso / progresoTotal))
|
|
|
+ sleep 2
|
|
|
+ progreso=$((progreso + 1))
|
|
|
+ } > >(whiptail --gauge "Configurando Servidor Web..." $((ALTO * 4 / 10)) $((ANCHO * 9 / 10)) $((100 * progreso / progresoTotal)))
|
|
|
+ printf " OK.\n"
|
|
|
# Configuración Database
|
|
|
# Arrancar Base de Datos, establecer contraseña y configuración segura
|
|
|
if [ $mySQLOn = true ];then
|
|
|
- habilitarServicio mysql
|
|
|
- establecerSQLPasswd
|
|
|
+ printf "Configurando Base de Datos MySQL..."
|
|
|
+ {
|
|
|
+ printf "%s\n" $((100 * progreso / progresoTotal))
|
|
|
+ habilitarServicio mysql
|
|
|
+ establecerSQLPasswd
|
|
|
+ progreso=$((progreso + 1))
|
|
|
+ } > >(whiptail --gauge "Configurando Base de Datos MySQL..." $((ALTO * 4 / 10)) $((ANCHO * 9 / 10)) $((100 * progreso / progresoTotal)))
|
|
|
+ printf " OK.\n"
|
|
|
fi
|
|
|
if [ $mariaDBOn = true ];then
|
|
|
- habilitarServicio mariadb
|
|
|
- establecerSQLPasswd
|
|
|
+ printf "Configurando Base de Datos MAriaDB..."
|
|
|
+ {
|
|
|
+ printf "%s\n" $((100 * progreso / progresoTotal))
|
|
|
+ habilitarServicio mariadb
|
|
|
+ establecerSQLPasswd
|
|
|
+ progreso=$((progreso + 1))
|
|
|
+ } > >(whiptail --gauge "Configurando Base de Datos MariaDB..." $((ALTO * 4 / 10)) $((ANCHO * 9 / 10)) $((100 * progreso / progresoTotal)))
|
|
|
+ printf " OK.\n"
|
|
|
fi
|
|
|
# Configuración PHP
|
|
|
# cgi.fix_pathinfo=0
|
|
|
# Configurar máximo de subida de archivos
|
|
|
+ printf "Configurando PHP-7..."
|
|
|
+ {
|
|
|
+ printf "%s\n" $((100 * progreso / progresoTotal))
|
|
|
+ sleep 2
|
|
|
+ progreso=$((progreso + 1))
|
|
|
+ } > >(whiptail --gauge "Configurando PHP-7..." $((ALTO * 4 / 10)) $((ANCHO * 9 / 10)) $((100 * progreso / progresoTotal)))
|
|
|
+ printf " OK.\n"
|
|
|
# Configuración MediWiki
|
|
|
+ printf "Configurando MediaWiki..."
|
|
|
+ {
|
|
|
+ printf "%s\n" $((100 * progreso / progresoTotal))
|
|
|
+ sleep 2
|
|
|
+ progreso=$((progreso + 1))
|
|
|
+ } > >(whiptail --gauge "Configurando MediaWiki..." $((ALTO * 4 / 10)) $((ANCHO * 9 / 10)) $((100 * progreso / progresoTotal)))
|
|
|
+ printf " OK.\n"
|
|
|
# Configuración Moodle
|
|
|
+ printf "Configurando Moodle..."
|
|
|
+ {
|
|
|
+ printf "%s\n" $((100 * progreso / progresoTotal))
|
|
|
+ sleep 2
|
|
|
+ progreso=$((progreso + 1))
|
|
|
+ } > >(whiptail --gauge "Configurando Moodle..." $((ALTO * 4 / 10)) $((ANCHO * 9 / 10)) $((100 * progreso / progresoTotal)))
|
|
|
+ printf " OK.\n"
|
|
|
# Arrancar y habilitar todos los servicios (SystemD, Service o SystemV)
|
|
|
+ printf "Arrancando Servicios..."
|
|
|
+ {
|
|
|
+ printf "%s\n" $((100 * progreso / progresoTotal))
|
|
|
+ sleep 2
|
|
|
+ progreso=$((progreso + 1))
|
|
|
+ } > >(whiptail --gauge "Arrancando Servicios..." $((ALTO * 4 / 10)) $((ANCHO * 9 / 10)) $((100 * progreso / progresoTotal)))
|
|
|
+ printf " OK.\n"
|
|
|
# Añadir reglas del cortafuegos
|
|
|
+ printf "Configurando Cortafuegos..."
|
|
|
+ {
|
|
|
+ printf "%s\n" $((100 * progreso / progresoTotal))
|
|
|
+ sleep 2
|
|
|
+ progreso=$((progreso + 1))
|
|
|
+ } > >(whiptail --gauge "Configurando Cortafuegos..." $((ALTO * 4 / 10)) $((ANCHO * 9 / 10)) $((100 * progreso / progresoTotal)))
|
|
|
+ printf " OK.\n"
|
|
|
# Configuración SSL/TLS
|
|
|
# Generar certificados
|
|
|
# Configurar certificados
|
|
|
+ printf "Configurando SSL/TLS..."
|
|
|
+ {
|
|
|
+ printf "%s\n" $((100 * progreso / progresoTotal))
|
|
|
+ sleep 2
|
|
|
+ progreso=$((progreso + 1))
|
|
|
+ } > >(whiptail --gauge "Configurando SSL/TLS..." $((ALTO * 4 / 10)) $((ANCHO * 9 / 10)) $((100 * progreso / progresoTotal)))
|
|
|
+ printf " OK.\n"
|
|
|
# Configurar actualizaciones
|
|
|
if [ $actualizacionesOn = true ]; then
|
|
|
printf "Configurando actualizaciones automáticas..."
|
|
|
- # CRONTAB
|
|
|
+ {
|
|
|
+ printf "%s\n" $((100 * progreso / progresoTotal))
|
|
|
+ sleep 2
|
|
|
+ progreso=$((progreso + 1))
|
|
|
+ } > >(whiptail --gauge "Configurando actualizaciones automáticas..." $((ALTO * 4 / 10)) $((ANCHO * 9 / 10)) $((100 * progreso / progresoTotal)))
|
|
|
printf " OK.\n"
|
|
|
fi
|
|
|
|
|
|
-# Autodestrucción
|
|
|
-{
|
|
|
- for i in $(seq 0 5 50); do
|
|
|
- sleep 0.1
|
|
|
- echo $i
|
|
|
- done
|
|
|
-} | whiptail --gauge "Autodestrucción..." 7 70 0
|
|
|
-{
|
|
|
- for i in $(seq 50 5 100); do
|
|
|
- sleep 0.1
|
|
|
- echo $i
|
|
|
- done
|
|
|
-} | whiptail --gauge "Autopulverización..." 7 70 50
|
|
|
-
|