-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprovisioning.sh
executable file
·141 lines (129 loc) · 3.91 KB
/
provisioning.sh
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
137
138
139
140
141
#!/bin/bash
# Autor: Edmundo Cespedes A.
# Licencia: GNU GPLv2
# Nombre: Provisioning
# Version: 1.0.0
# FUNCION:
# Aprovisionamiento de servidor
# ------------------------------------------------------------------------------
# VARIABLES
# ------------------------------------------------------------------------------
declare -a os_distro=( "Fedora" "RedHat" "CenOS" "AlmaLinux" "RockiLinux" "Debian" "Ubuntu");
#declare os;
declare os_id=0;
# ------------------------------------------------------------------------------
# FUNCIONES
# ------------------------------------------------------------------------------
f_os_detect() {
for i in "${os_distro[@]}"; do
local distro
distro=$(cat /etc/*-release | grep "NAME" | grep -o -m1 -i "$i");
if [ -n "$distro" ]; then
os=$distro;
break;
fi
done
case $os in
Fedora | RedHat | CenOS | AlmaLinux | RockiLinux)
os_id=1;
;;
Debian | Ubuntu)
os_id=2;
;;
*)
echo "Sistema operativo desconocido";
exit;
;;
esac
echo "Sistema Operativo indetificado como: $os"
}
f_os_update() {
echo "Actualizando $os";
case $os_id in
1)
sudo dnf upgrade -y;
;;
2)
sudo apt update && sudo apt upgrade -y;
;;
0)
echo "Sistema no definido";
exit;
;;
esac
}
# Función para dibujar una línea horizontal
draw_horizontal_line() {
local line=""
local width=${COLUMNS:-$(tput cols)} # Obtener el ancho de la terminal o establecer un valor predeterminado
local char="${1:--}" # Obtener el carácter especificado o usar "-" como predeterminado
for ((i=0; i<width; i++)); do
line+="$char"
done
echo "$line"
}
# Función para imprimir texto en negrita
bold_text() {
echo -e "\e[1m$1\e[0m" # \e[1m inicia negrita, \e[0m termina negrita
}
# ------------------------------------------------------------------------------
# SCRIPT
# ------------------------------------------------------------------------------
# Menu del script
#Detectando Sistema Operativo
f_os_detect
# Definir las opciones del menú
options=("Opción 1" "Opción 2" "Opción 3" "Salir")
# Bucle para mostrar el menú
while true; do
# Limpiar la terminal
clear
# Mostrar el título del menú
draw_horizontal_line "*"
bold_text "Menú interactivo de Aprovisionamiento para $os"
draw_horizontal_line "*"
# Mostrar las opciones del menú
for ((i=0; i<${#options[@]}; i++)); do
echo "$((i+1)). ${options[i]}"
done
# Pedir al usuario que elija una opción
draw_horizontal_line "="
read -rp "Ingrese el número de la opción deseada: " choice
draw_horizontal_line
# Validar la opción ingresada
if [[ "$choice" -gt 0 && "$choice" -le "${#options[@]}" ]]; then
case $choice in
1)
echo "Ha elegido la Opción 1"
# Agrega aquí el código para la Opción 1
f_os_update
;;
2)
echo "Ha elegido la Opción 2"
# Agrega aquí el código para la Opción 2
;;
3)
echo "Ha elegido la Opción 3"
# Agrega aquí el código para la Opción 3
;;
4)
echo "Saliendo del programa"
exit
;;
*)
echo "Opción inválida. Por favor, elija una opción válida."
;;
esac
else
echo "Opción inválida. Por favor, elija una opción válida."
fi
# Esperar antes de volver al menú
read -rp "Presione Enter para volver al menú principal..."
# Volver al principio del bucle
done
# Verificancion de Proceso Ejecutado
if $?; then
echo "Instalacion realizada exitosamente"
else
echo "Instalacion NO realizada exitosamente"
fi