0% encontró este documento útil (0 votos)
19 vistas19 páginas

Manual - Script Bash

Este documento describe un script Bash que implementa un menú principal con Whiptail para administrar diferentes tareas en un sistema operativo. El menú principal permite al usuario seleccionar opciones como administración de usuarios, estado del PC e instalación de PSA. La administración de usuarios incluye crear y eliminar usuarios mediante archivos o de forma manual solicitando la información.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
19 vistas19 páginas

Manual - Script Bash

Este documento describe un script Bash que implementa un menú principal con Whiptail para administrar diferentes tareas en un sistema operativo. El menú principal permite al usuario seleccionar opciones como administración de usuarios, estado del PC e instalación de PSA. La administración de usuarios incluye crear y eliminar usuarios mediante archivos o de forma manual solicitando la información.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 19

Ingeniero Luis Henriquez Valle Yanes

Programación para Sistemas Abiertos II

Scipt Bash

Integrantes

1.Aristides Martinez 201930110197


2.Daniel David Solano Aguilar 201810110093
3.Eduardo Josue Ordóñez Castro 201810110124
4.María Isabel Aguilera Hernández 201810110113
5.Marvin Miguel Manzanarez Melgares 201810110015
6.Stephany Paola Calix Maradiaga 201810110097

09/07/2022
ÍNDICE
I. Menú principal con Whiptail ....................................................................................... 1

II. Administración de usuarios...................................................................................... 3

III. Estado de PC .......................................................................................................... 10

IV. Instalación PSA...................................................................................................... 15


1

I. MENÚ PRINCIPAL CON WHIPTAIL


La utilización del programa requiere ubicarlo en el d irectorio /home donde adicionalmente
se creará un directorio nombrado lv¸ dentro del directorio de nuestro programa nos
encontraremos con varios archivos con extensión shell script .sh, el archivo menu_whiptail.sh
es el archivo principal que contiene la ejecución y funcionamiento de submenús del
programa.

Al ejecutarlo deberá verse de la siguiente manera

El archivo menu_whiptail.sh contiene un ciclo de estructura de control que permitirá


seleccionar los diferentes submenús del programa y terminará hasta que el usuario termine
la ejecución.
2

#!/bin/bash
salir=0
while [ $salir -eq 0 ]; do
function MenuPrincipal() {
opcion_menu_1=$(whiptail --title "Menu principal" --menu "Elige una opción"
12 50 4 \
"1" "Ardministracion de Usuarios" \
"2" "Estado de PC" \
"3" "Instalación PSA" \
"4" "Cerrar Menu" 3>&1 1>&2 2>&3)
case $opcion_menu_1 in
1)
function Menu_User(){
...
}
;;
2)
function Menu_Estado(){
...
}
;;
3)
function Menu_Instalacion(){
...
}
;;
4)
salir=1
;;
esac
}
MenuPrincipal
Menu_User
Menu_Estado
Menu_Instalacion

done
3

II. ADMINISTRACIÓN DE USUARIOS


Al seleccionar la opción Administración de Usuarios se nos abrirá un menú donde estarán
las opciones de Crear usuarios y su contraparte de Borrar usuarios.

function Menu_User(){
opcion_menu_2=$(whiptail --title "Ardministracion de Usuarios" --menu
"Seleccione" 11 50 3 \
"1" "Crear usuario" \
"2" "Borrar usuarios" \
"3" "Regresar" 3>&1 1>&2 2>&3)

if [ $opcion_menu_2 = "1" ];then

...
elif [ $opcion_menu_2 = "2" ];then
...
elif [ $opcion_menu_2 = "3" ];then
MenuPrincipal

fi
}
;;

Al seleccionar la opción de Crear usuario se abrirá un menú el cual contendrá las opciones
Crear mediante archivo y Crear manualmente.
4

salir=0
while [ $salir -eq 0 ]; do
menu_item1=$(whiptail --title "Ardministracion de Usuaios" --menu
"Seleccione" 11 50 3 \
"1" "Crear mediante archivo'" \
"2" "Crear manualmente" \
"3" "Regresar" 3>&1 1>&2 2>&3)
case $menu_item1 in
1)
sh crearUser_archivo.sh
;;
2)
sh crearUser_manual.sh
...
;;
3)
Menu_User
;;
esac
done

Al seleccionar la opción Crear mediante archivo iniciará la ejecución del archivo shell script
nombrado crearUser_manual.sh que contiene las siguientes instrucciones de comandos

Se crea la estructura de completar la información con el nombre de usuarios y se valida los


archivos de las rutas en caso de errores
5

#!/bin/bash
ingreso_user=$(whiptail --title "Creacion de usuario por archivo" \
--inputbox "Ingrese nombre y extension de
archivo" 11 50 \
3>&1 1>&2 2>&3)

#verificar que el archivo de usuarios existe mediante el uso de la


variable del nombre de archivo
if [ -f /home/iaguilera/lv/psafiles/usuarios/$ingreso_user ]; then
# ^ CAMBIAR ESTA RUTA EN CASO DE NO SER IGUAL PARA EVITAR
ERRORESthen
whiptail --title "Aviso" \
--msgbox "Extraendo usuarios...(☞゚ヮ゚)☞" 11 50

else
whiptail --title "Aviso" \
--msgbox "El archivo de usuarios no existe...☜(゚ヮ゚☜)" 11 50
exit 1

fi

Una vez realizada las validaciones se almacenan los datos en variables y se realiza el envío
de información para la creación de usuarios

#cargar los datos del archivo a una variable


for LINE in $USER
do

LOGIN=`echo $LINE | cut -d: -f2`


NOMBRE=`echo $LINE | cut -d: -f3`
APELLIDOS=`echo $LINE | cut -d: -f4`
CORREO=`echo $LINE | cut -d: -f5`
PASSWORD=`echo $LINE | cut -d: -f6`

#omitiendo datos que corresponden al GECOS


CGECOS=`echo $NOMBRE,$APELLIDOS,$CORREO`

#creando usuario
sudo useradd -m -s /bin/bash -c $CGECOS $LOGIN

#agregando password
echo "$LOGIN:$PASSWORD" | sudo chpasswd --md5
done

whiptail --title "Aviso" \


--msgbox "Usuario(s) creado(s) ☜(゚ヮ゚☜)" 11 50
6

Al seleccionar la opción Crear manualmente realizará la ejecución del archivo


crearUser_manual.sh el cual contiene las siguientes instrucciones de comandos
#!/bin/bash

LOGIN=$(whiptail --title "Creacion de usuario manual" \


--inputbox "Ingrese correctamente el login del
usuario" 11 50 \
3>&1 1>&2 2>&3)

NOMBRE=$(whiptail --title "Creacion de usuario manual" \


--inputbox "Ingrese correctamente el nombre del
usuario" 11 50 \
3>&1 1>&2 2>&3)

APELLIDOS=$(whiptail --title "Creacion de usuario manual" \


--inputbox "Ingrese correctamente el apellido de l
usuario" 11 50 \
3>&1 1>&2 2>&3)

CORREO=$(whiptail --title "Creacion de usuario manual" \


--inputbox "Ingrese correctamente el email del
usuario" 11 50 \
3>&1 1>&2 2>&3)

PASSWORD=$(whiptail --title "Creacion de usuario manual" \


--inputbox "Ingrese correctamente el password del
usuario" 11 50 \
3>&1 1>&2 2>&3)

#omitiendo datos que corresponden al GECOS


CGECOS=`echo $NOMBRE,$APELLIDOS,$CORREO`

#creando usuario
sudo useradd -m -s /bin/bash -c $CGECOS $LOGIN

#agregando password
echo "$LOGIN:$PASSWORD" | sudo chpasswd --md5

whiptail --title "Aviso" \


--msgbox "Usuario(s) creado(s) ☜(゚ヮ゚☜)" 11 50

Se pedirá que escriba la información necesaria del usuario para su creación manual y se
enviará la información para la creación del usuario.

Una vez realizada la creación de usuarios podemos eliminarlos si regresamos al menú


principal de Administración de Usuarios y seleccionamos la opción Borrar usuarios que
contiene el siguiente menú
7

salir=0
while [ $salir -eq 0 ]; do
menu_item2=$(whiptail --title "Ardministracion de Usuaios" --menu
"Seleccione" 11 50 3 \
"1" "Borrar mediante archivo'" \
"2" "Borrar manualmente" \
"3" "Regresar" 3>&1 1>&2 2>&3)
case $menu_item2 in
1)
sh deletUser_archivo.sh
;;
2)
sh deletUser_manual.sh
...
;;
3)
Menu_User
;;
esac
done

Al seleccionar la opción Borrar mediante archivo realizará la ejecución del archivo


deleteUser_archivo.sh el cual contiene las siguientes instrucciones de comandos

Se crea la estructura de completar la información con el nombre de usuarios y se valida los


archivos de las rutas en caso de errores
8

#!/bin/bash

ingreso_user=$(whiptail --title "Borrar usuario por archivo" \


--inputbox "Ingrese nombre y extension de
archivo" 11 50 \
3>&1 1>&2 2>&3)

#verificar que el archivo de usuarios existe mediante el uso de la


variable del nombre de archivo
if [ -f /home/iaguilera/lv/psafiles/usuarios/$ingreso_user ]; then
# ^ CAMBIAR ESTA RUTA EN CASO DE NO SER IGUAL PARA EVITAR
ERRORESthen
whiptail --title "Aviso" \
--msgbox "Extraendo usuarios...(☞゚ヮ゚)☞" 11 50

else
whiptail --title "Aviso" \
--msgbox "El archivo de usuarios no existe...☜(゚ヮ゚☜)" 11 50
exit 1

fi

Una vez realizada las validaciones se almacenan los datos en variables y se realiza el envio
de información para la eliminación de usuarios.

#cambiar los espacios por _


USER=`cat /home/iaguilera/lv/psafiles/usuarios/$ingreso_user | tr " "
_`

#cargar los datos del archivo a una variable


for LINE in $USER
do

LOGIN=`echo $LINE | cut -d: -f2`

#borrando usuario
sudo userdel -r $LOGIN

done

whiptail --title "Aviso" \


--msgbox "Usuario(s) eliminado(s) ☜(゚ヮ゚☜)" 11 50
fi

Al seleccionar la opción Borrar manualmente del menú se realizará la ejecución del archivo
deletUser_manual.sh el cual contiene las siguientes instrucciones de comandos
9

El cuál solicitará el ingreso de los usuarios a ser eliminados.

#!/bin/bash

LOGIN=$(whiptail --title "Borrar usuario de forma manual" \


--inputbox "Ingrese correctamente el login del
usuario a eliminar" 11 50 \
3>&1 1>&2 2>&3)

#borrando usuario
sudo userdel -r $LOGIN

whiptail --title "Aviso" \


--msgbox "Usuario eliminado ☜(゚ヮ゚☜)" 11 50
10

III. ESTADO DE PC
En el menú principal la opción Estado de PC este ejecutará la siguiente función el cual
contiene un menú que contiene las opciones de Mostrar Estado, Actualizar Log y
Configuración

function Menu_Estado(){
salir=0
while [ $salir -eq 0 ]; do
opcion_menu_3=$(whiptail --title "Estado de PC" --menu "Seleccione" 12 50 4 \
"1" "Mostrar Estado" \
"2" "Actualizar Log" \
"3" "Configuracion" \
"4" "Regresar" 3>&1 1>&2 2>&3)

if [ $opcion_menu_3 = "1" ];then


sh mostrar_estado.sh
elif [ $opcion_menu_3 = "2" ];then
sh update_log.sh
elif [ $opcion_menu_3 = "3" ];then
sh configuracion.sh
elif [ $opcion_menu_3 = "4" ];then
MenuPrincipal

fi

done
}
;;

Al seleccionar la opción Mostrar Estado este ejecutará el archivo mostrar_estado.sh el cual


contiene las siguientes instrucciones de comando.
11

En este archivo se valida la existencia de directorio y se usa como base el archivo de texto
cant.txt para verificar la cantidad de logs a imprimir

#!/bin/bash
FOLDER=statepc
#Existe la carpeta?
if [ -d "$FOLDER" ]
then
#El directorio existe
var1=`ls statepc | wc -l`
else
#El directorio no existe
mkdir statepc
var1=`ls statepc | wc -l`
fi

#Existen archivos?
if [ $var1 -ge 1 ]
then
#Existen
#Calidar tengo y quiero

FILE="cant.txt"
#Existe el archivo?
if [ -f "$FILE" ]
then
#El directorio existe
canti=`cat cant.txt`
else
#El directorio no existe
echo 1 > cant.txt
canti=`cat cant.txt`
fi

if [ $var1 -ge $canti ]


then
cantprint=$canti
else
cantprint=$var1
fi

for (( c=1; c<=$cantprint; c++ ))


do
namef=log$c.txt
echo "---------------Log #$c---------------"
cat statepc/$namef
echo "------------Fin Log #$c--------------"
done
else
#No existen archivos
Alecho
seleccionar
'-----Nolahay
opción Actualizar Log este ejecutará
logs-----' el archivo update_log.sh el cual
fi
contiene las siguientes instrucciones de comando
namef=log$num.txt

echo 'Presione enter para continuar'


read fakevar
clear
12

El archivo verificará la existencia de los directorios para generar logs actualizados, en caso
de que no exista el directorio será creado y nombrado statepc

#!/bin/bash
FOLDER=statepc
#Existe la carpeta?
if [ -d "$FOLDER" ]
then
#El directorio existe
var1=`ls statepc | wc -l`
else
#El directorio no existe
mkdir statepc
var1=`ls statepc | wc -l`
fi

#Existen archivos?
if [ $var1 -ge 1 ]
then
#Existen
num=`expr $var1 + 1`;
else
#No existen archivos
num=1;
fi
namef=log$num.txt

Posteriormente cargará la información necesaria para verificar la ultima actualización la cual


será: Estado de PC, fecha y hora, uptime, uso de CPU, uso de disco, consumo de red
13

#Cargar Log
echo '-----ESTADO DE PC-----' >> statepc/$namef
echo ' ' >> statepc/$namef
date +'FECHA: %D HORA: %H:%M:%S' >> statepc/$namef
echo ' ' >> statepc/$namef
echo 'UPTIME:' >> statepc/$namef
uptime >> statepc/$namef
echo ' ' >> statepc/$namef
echo 'USO DE CPU:' >> statepc/$namef
mpstat >> statepc/$namef
echo ' ' >> statepc/$namef
echo 'USO DE DISCO:' >> statepc/$namef
df -h >> statepc/$namef
echo ' ' >> statepc/$namef
echo 'CONSUMO DE RED:' >> statepc/$namef
route >> statepc/$namef
echo '-----FIN DE LOG-------' >> statepc/$namef
clear

whiptail --title "Actualizar Log" \


--msgbox "LISTO!!!, Log Generado con Exito." 7 40

sleep 3
clear

Al seleccionar la opción Configuración este ejecutará el archivo configuración.sh el cual


contiene las siguientes instrucciones de comando

Este archivo contiene las instrucciones de comando para crear el archivo de texto cant.txt el
cual contendrá la información del número de logs para el funcionamiento de mostrar estado
y actualización de logs.

Realiza la validación de las rutas de directorios y nombre de archivo para la correcta


ejecución en caso de no ser encontrado es creado y se solicita que ingrese la información del
archivo.
14

#!/bin/bash
clear
FILE="cant.txt"
#Existe el archivo?
if [ -f "$FILE" ]
then
#El directorio existe
canti=`cat cant.txt`
else
#El directorio no existe
echo 1 > cant.txt
canti=`cat cant.txt`
fi
whiptail --title "Configuracion" \
--msgbox "La cantidad de Logs Configurada para imprimir es: $(cat
cant.txt) " 7 60
whiptail --title "Configuracion" \
--yesno "¿Desea cambiar la cantidad?" 7 50
ans=$?
case $ans in
0)
cant=$(whiptail --title "Configuracion"
\

--inputbox "Digite la cantidad de Logs deseados" 7 50 \


3>&1 1>&2 2>&3)

echo $cant > cant.txt


;;

1)
op=1
;;
esac
clear
15

IV. INSTALACIÓN PSA


En el menú principal la opción Instalación PSA este ejecutará la siguiente función el cual
contiene un menú que contiene las opciones de Instalar Grafana y Instalar Node-Red

function Menu_Instalacion(){
echo "3"
salir=0
while [ $salir -eq 0 ]; do
opcion_menu_4=$(whiptail --title "Instalacion" --menu "Seleccione" 12 50 3 \
"1" "Instalar Grafana" \
"2" "Instalar Node-Red" \
"3" "Regresar" 3>&1 1>&2 2>&3)

if [ $opcion_menu_4 = "1" ];then


sh install_grafana.sh
elif [ $opcion_menu_4 = "2" ];then
sh install_node.sh
elif [ $opcion_menu_4 = "3" ];then
MenuPrincipal

fi
done
}

;;

Al seleccionar la opción Instalar Grafana este ejecutará el archivo install_grafana.sh el cual


contiene las siguientes instrucciones de comando

El archivo contiene comandos utilizados con el gestor de paquetes de yum para la descarga
e instalación de grafana y el administrador y controlador de servicios para iniciar el servicio
16

de grafana y luego se configuran las reglas de firewall para añadir el puerto al servicio, una
vez realizado se abrirá la ventana de inicio de sesión en navegador predeterminado

#!/bin/bash

sudo yum update;


echo '-----------------------------------------------'
sudo nano /etc/yum.repos.d/grafana.repo
echo '-----------------------------------------------'
sudo yum install grafana
echo '-----------------------------------------------'
sudo systemctl daemon-reload
echo '-----------------------------------------------'
sudo systemctl start grafana -server
echo '-----------------------------------------------'
sudo systemctl status grafana-server
echo '-----------------------------------------------'
sudo systemctl enable grafana-server
echo '-----------------------------------------------'
sudo yum install nmap
echo '-----------------------------------------------'
sudo nmap –p 1-1000 127.0.0.1
echo '-----------------------------------------------'
sudo netstat -putna
echo '-----------------------------------------------'
firewall-cmd --list-all
echo '-----------------------------------------------'
firewall-cmd --add-port=3000/tcp --permanent
echo '-----------------------------------------------'
firewall-cmd --reload
echo''
whiptail --title "Instalacion" \
--msgbox "Se ha instalado correctamente, presione enter para abrir
login" 12 40

/usr/bin/firefox -new-window http://127.0.0.3:3000/login

Al seleccionar la opción Instalar Node-Red este ejecutará el archivo install_node.sh el cual


contiene las siguientes instrucciones de comando.

El arachivo contiene comandos utilizados con el gestor de paquetes de yum para la descarga
e instalación de nodejs y el administrador de paquetes de node que realizará la instalación
global del paquete node-red
17

#!/bin/bash

sudo yum update;


echo '-----------------------------------------------'
sudo yum install epel-release -y
echo '-----------------------------------------------'
sudo yum install wget -y
echo '-----------------------------------------------'
sudo yum install nodejs
echo '-----------------------------------------------'
sudo yum install npm
echo '-----------------------------------------------'
sudo npm install -g node-red
echo '-----------------------------------------------'

echo '-----------------------------------------------'

NODE=node --version
echo''

whiptail --title "Instalacion" \


--msgbox "Se instalo Node-Red Version: $NODE" 7 60

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy