Explorar el Código

Añadiendo barra de estado y control de tamaño de ventana

Guzmán Castanedo Villalba hace 6 años
padre
commit
3ded6e4203
Se han modificado 1 ficheros con 139 adiciones y 33 borrados
  1. 139 33
      install

+ 139 - 33
install

@@ -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
-