Está en la página 1de 61

Proyecto Final

Sistemas
Operativos II
Solicitante:
I.T.S. — Instituto Tecnológico superior Arias - Balparda
Grupo: 2°BT
Horario: Matutino
Materia: Sistemas Operativos II
Integrantes: Dahiana Basigaluz, Camilo Castro, Pablo Costa

Fecha de entrega: 21/11/2023

Instituto Tecnológico Superior F. Arias – L. Balparda


Gral. Flores 3591 esq. Bvar. José Batlle y Ordoñez - Montevideo
Objetivo
Aplicar y demostrar los conocimientos adquiridos durante el año en la
asignatura Sistemas Operativos II.

Alcance
Aprender a crear un script en linux, incorporando todos los conocimientos
que obtuvimos durante todo el curso de Sistemas Operativos II.

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 2


Índice

Índice....................................................................................................................................... 3
1. ¿Por qué elegimos este diseño?...................................................................................... 4
2. Diagrama de navegabilidad...............................................................................................5
3. Códigos Scripts..................................................................................................................6
1) Login.............................................................................................................................. 6
2) Administrativo.sh.......................................................................................................................... 9
3) Gerente.sh................................................................................................................................. 22
4) CEO.sh.......................................................................................................................................30
5) Clientes.sh................................................................................................................... 38
6) Inmuebles...................................................................................................................................42
7) Contratos.sh............................................................................................................................... 47
4. DATOS DE PRUEBA:.................................................................................................................52
4. Descripción de cada carpeta de archivos de datos......................................................53
Manual de Usuario............................................................................................................... 54

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 3


1. ¿Por qué elegimos este diseño?

En primer lugar, decidimos usar módulos para que sea más amena la programación
por lo que creamos 7 scripts de los cuales, tres son para el registro de datos, clientes.sh,
inmuebles.sh y contratos.sh. Luego tenemos los programas de cada sección y que permite
realizar ciertas acciones sobre los archivos generados o mismo en los demás scripts.

Por último tenemos el script de Login que es solamente para que el usuario se
pueda loguear y acceder a su respectivo menú.

En segundo lugar, Art Ascii es un arte que se puede utilizar en bash en lugar
de las imágenes y para darle una interfaz más amigable buscamos algunos
elementos relacionados con nuestra Inmobiliaria Costa Luz.

Primeramente para el Login, escogimos un diseño atractivo para que sea


agradable a la vista del usuario.

Luego, en la ficha de “Clientes” pusimos la cara de Anonymous para


identificar que los datos son relacionados a personas. Elegimos la de Anonymous
más que nada porque nos pareció divertido poner su cara tan identificadora.

En “Contratos” escogimos una llave y un candado, ya que, cuando uno


alquila o compra adquiere la llave de ese lugar, entonces nos pareció identificativo
para la sección de “Contratos”.

Finalmente, tenemos la ficha de “Inmuebles”, en la que seleccionamos


simplemente unos edificios ya que son inmuebles.

En cuanto a los colores seleccionamos los mismos para cada sección que
utilizamos en programación. Por ejemplo, el verde para CEO, el azul para gerente y
el rojo para ADMIN. No tenemos una razón en sí del por qué pero es algo que nos
gustó y por eso lo colocamos, más bien como un estándar.

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 4


2. Diagrama de navegabilidad

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 5


3. Códigos Scripts

1) Login

#!/bin/bash

printf '\e[8;60;100t'

reingresar=-1
while [ $reingresar != 0 ];
do

echo -e "\n"
echo -e "\e[1;34m\t\t
───────────────────────────────────▄▀█▀█▀▄ \e[0m"
echo -e "\e[1;34m\t\t ─────────█▄██▄█
─────────────────────▀▀▀▀▀▀▀▀▀ \e[0m"
echo -e "\e[1;34m\t\t █▄█▄█▄█▄█▐█┼██▌█▄█▄█▄█▄█
─────────────▄─░░░░░▄ \e[0m"
echo -e "\e[1;34m\t\t ███┼█████▐████▌█████┼███
───█──▄─▄───▐▌▌░░░░░▌▌ \e[0m"
echo -e "\e[1;34m\t\t
█████████▐████▌█████████▌▄█▐▌▐█▐▐▌█▌█▌█░░░░░▌▌▌ \e[0m"
echo -e "\e[1;34m\t\t
█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
▀▀▀▀▀▀▀▀▀▀▀█ \e[0m"
echo -e "\e[1;34m\t\t █░░ ░█▀▀█ ▀█▀ ░█▀▀▀ ░█▄─░█ ░█──░█ ░█▀▀▀ ░█▄─░█
▀█▀ ░█▀▀▄ ░█▀▀▀█ ░░█ \e[0m"
echo -e "\e[1;34m\t\t █░░ ░█▀▀▄ ░█─ ░█▀▀▀ ░█░█░█ ─░█░█─ ░█▀▀▀ ░█░█░█
░█─ ░█─░█ ░█──░█ ░░█ \e[0m"
echo -e "\e[1;34m\t\t █░░ ░█▄▄█ ▄█▄ ░█▄▄▄ ░█──▀█ ──▀▄▀─ ░█▄▄▄ ░█──▀█
▄█▄ ░█▄▄▀ ░█▄▄▄█ ░░█ \e[0m"
echo -e "\e[1;34m\t\t
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▄▄▄▄▄▄▄▄▄▄▄█ \e[0m\n"

if [ ! -d "Login" ] && [ ! -f "Login/datosLoginCEO.txt" ] || [ ! -f


"Login/datosLoginGERENTE.txt" ] || [ ! -f "Login/datosLoginADMIN.txt" ]; then

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 6


mkdir -p "Login"
touch "Login/datosLoginCEO.txt" "Login/datosLoginGERENTE.txt"
"Login/datosLoginADMIN.txt"
sleep 1
fi

if [ ! -f "Log" ]; then
touch "Log.txt"
sleep 1
fi

echo -e "\e[1;34m\t\t
●▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬๑۩۩๑▬▬▬▬▬▬
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬● \e[0m"
echo -e "\e[1;34m\t\t ● ● \e[0m"
echo -e "\e[1;34m\t\t ● █░░ █▀█ █▀▀ █ █▄░█ ░ ░ ░
● \e[0m"
echo -e "\e[1;34m\t\t ● █▄▄ █▄█ █▄█ █ █░▀█ ▄ ▄ ▄
● \e[0m"
echo -e "\e[1;34m\t\t ● ● \e[0m"
echo -e "\e[1;34m\t\t ● ● \e[0m"
echo -e "\e[1;34m\t ●\e[0m""\e[1;31m ▶▶ Ingrese su cédula sin puntos ni
guiones.""\e[1;34m ● \e[0m"
echo -e "\e[1;34m\t\t ●\t \c"
read -r -p "" ced
echo -e "\e[1;34m\t\t ● ● \e[0m"
echo -e "\e[1;34m\t ●\e[0m""\e[1;31m ▶▶ Ingrese su contraseña.""\e[1;34m
● \e[0m"
echo -e "\e[1;34m\t\t ●\t \e[0;30m\c "
read -r -p "" pass
echo -e "\e[1;34m\t\t ● ● \e[0m"
echo -e "\e[1;34m\t\t ● ● \e[0m"
echo -e "\e[1;34m\t\t ● ● \e[0m"
echo -e "\e[1;34m\t\t ● ● \e[0m"
echo -e "\e[1;34m\t\t
●▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬๑۩۩๑▬▬▬▬▬▬
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬● \e[0m"

if [ ! -z "$ced" ] && [ ! -z "$pass" ]; then


if grep -q "$ced:$pass" "Login/datosLoginCEO.txt"; then
timestamp=$(date +"%d""-""%m""-""%y""-""%H:%M:%S")
echo -e ""$ced"":""$timestamp"" >> "Log.txt"
sleep 2
sh ceo.sh

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 7


reingresar=0

elif grep -q "$ced:$pass" "Login/datosLoginGERENTE.txt"; then

timestamp=$(date +"%d""-""%m""-""%y""-""%H:%M:%S")
echo -e ""$ced"":""$timestamp"" >> "Log.txt"
sleep 2
sh gerente.sh
reingresar=0

elif grep -q "$ced:$pass" "Login/datosLoginADMIN.txt"; then


timestamp=$(date +"%d""-""%m""-""%y""-""%H:%M:%S")
echo -e ""$ced"":""$timestamp"" >> "Log.txt"
sleep 2
sh admin.sh
reingresar=0
else
echo -e "\n"
echo -e "\e[1;31m\t\t ▶▶ Usuario o contraseña no válido, intente nuevamente.\e[0m"
sleep 2
clear
fi
else
echo -e "\n"
echo -e "\e[1;31m\t\t ▶▶ La cédula y/o la contraseña no pueden ser espacios en
blanco.\e[0m"
sleep 2
clear
fi
done

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 8


2) Administrativo.sh
#!/bin/bash

printf '\e[8;50;150t'

i=1
while [ $i -eq 1 ];
do

clear
echo -e "\n"
echo -e "\e[1;31m\t\t
█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
▀▀▀▀█ "
echo -e "\e[1;31m\t\t █░░
▄▀█ █▀▄ █▀▄▀█ █ █▄░█ █ █▀ ▀█▀ █▀█ ▄▀█ █▀▀ █ █▀█ █▄░█
░░█ "
echo -e "\e[1;31m\t\t █░░
█▀█ █▄▀ █░▀░█ █ █░▀█ █ ▄█ ░█░ █▀▄ █▀█ █▄▄ █ █▄█ █░▀█
░░█ "
echo -e "\e[1;31m\t\t
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▄▄▄▄█ \e[0;31m\n\n"

echo -e "\e[34m\t\t »»————- █▀▄▀█ █▀▀ █▄░█ █░█ ————-««"


echo -e "\e[34m\t\t »»————- █░▀░█ ██▄ █░▀█ █▄█ ————-««"
echo -e "\n"

echo -e "\t\e[1;31m ▶▶ 1. Registro de Clientes.\e[0m"


echo -e "\t\e[1;31m ▶▶ 2. Registro de Inmuebles.\e[0m"
echo -e "\t\e[1;31m ▶▶ 3. Modificar datos de Clientes o Inmuebles.\e[0m"
echo -e "\t\e[1;31m ▶▶ 4. Consultar Clientes o Inmuebles.\e[0m"
echo -e "\t\e[1;31m ▶▶ 5. AMB de Contratos.\e[0m"
echo -e "\t\e[1;31m ▶▶ 0. Salir.\e[0m\n"

echo -e "\t\e[1;31m ▶▶ Ingrese una opción o su cédula para acceder a su Menú: \e[0m"
echo -e "\t\e[1;33m \c"
read op

clear
case $op in

1)

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 9


sh clientes.sh
sleep 2
;;

2)

sh inmuebles.sh
sleep 3
;;

3)
reingresar=-1
while [ $reingresar != 0 ];
do

clear
echo -e "\n"
echo -e "\e[31m\t\t »»————-
█▀▄▀█ █▀█ █▀▄ █ █▀▀ █ █▀▀ ▄▀█ █▀▀ █ █▀█ █▄░█
█▀▄ █▀▀ █▀▄ ▄▀█ ▀█▀ █▀█ █▀ ————-««\e[0m"
echo -e "\e[31m\t\t »»————-
█░▀░█ █▄█ █▄▀ █ █▀░ █ █▄▄ █▀█ █▄▄ █ █▄█ █░▀█
█▄▀ ██▄ █▄▀ █▀█ ░█░ █▄█ ▄█ ————-««\e[0m\n\n"
echo -e "\n"

echo -e "\e[1;31m ▶▶ Ingrese "C" para modificar datos del "Cliente" o "I" para
Inmuebles (0 para volver al Menú anterior).\e[0m"
echo -e "\e[1;33m \c"
read mod

clear
case $mod in

C)

clear
echo -e "\n"
echo -e "\e[31m\t\t »»————-
█▀▀ █░░ █ █▀▀ █▄░█ ▀█▀ █▀▀ █▀ ————-««\e[0m"
echo -e "\e[31m\t\t »»————-
█▄▄ █▄▄ █ ██▄ █░▀█ ░█░ ██▄ ▄█ ————-««\e[0m\n\n"
echo -e "\n"
echo -e "\n"

ls Clientes/*.txt 2> errorfile.txt

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 10


echo -e "\e[1;31m ▶▶ Ingrese el nombre del archivo que desea modificar. Presione 0
para volver al Menú anterior\e[0m"
echo -e "\e[1;33m \c"
read ced

if [ "$ced" = "0" ]; then


reingresar=0
clear
continue
fi

echo -e "\n"
echo -e "\t\e[1;35m ▶▶ Campo 1: Cédula | Campo 2: Nombre | Campo
3: Apellido | Campo 4: Día | Campo 5: Mes | Campo 6: Año | \e[0m"
echo -e "\n"
echo -e "\t\e[1;35m ▶▶ Campo 7: Email | Campo 8:Teléfono | Campo
9: Tipo de Cliente | Campo 10: Inmueble |\e[0m"
echo -e "\n"
echo -e "\t\e[32m \c"
cat -n "Clientes/$ced.txt" 2> errorfile.txt

echo -e "\n"
echo -e "\n\e[1;31m ▶▶ Ingrese el número de campo que desea modificar.
Presione 0 para eliminar la línea entera.\e[0m"
echo -e "\e[33m \c"
read campo

if [ "$campo" = "0" ]; then


sed -i "${linea}d" "Clientes/$ced.txt"

else

echo -e "\n"
echo -e "\e[1;31m ▶▶ Ingrese el dato que quiere actualizar o deje en blanco para
dejar el campo vacío y presione Enter.\e[0m"
echo -e "\e[33m \c"
read nuevoDato

awk -v field="$campo" -v newData="$nuevoDato" 'BEGIN {FS=OFS=":"}


{$field=gensub(/:/, "", "g", newData)}1' "Clientes/$ced.txt" > temp.txt

mv temp.txt "Clientes/$ced.txt"

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 11


sleep 5
fi

lineaM=$(sed -n "${linea}p" "Clientes/$ced.txt")


echo -e "\e[1;33m Linea actualizada: $lineaM.\e[0m"
sleep 7
clear
;;

I)

clear
echo -e "\n"
echo -e "\e[31m\t\t »»————-
█ █▄░█ █▀▄▀█ █░█ █▀▀ █▄▄ █░░ █▀▀ █▀ ————-««\e[0m"
echo -e "\e[31m\t\t »»————-
█ █░▀█ █░▀░█ █▄█ ██▄ █▄█ █▄▄ ██▄ ▄█ ————-««\e[0m\n\n"
echo -e "\n"

ls Inmuebles/*.txt 2> errorfile.txt

echo -e "\e[1;31m ▶▶ Ingrese el nombre del archivo que desea modificar. Presione 0
para volver al Menú anterior.\e[0m"
echo -e "\e[1;33m \c"
read pad

if [ "$pad" = "0" ]; then


reingresar=0
clear
continue
fi

echo -e "\n\e[1;31m ▶▶ ¿Qué tipo de inmueble es: "TERRENO/HABITABLE"?.


Escribalo tal y como se muestra.\e[0m"
echo -e "\e[1;33m \c"
read tipo

if [ "$tipo" == "TERRENO" ]; then

echo -e "\n"
echo -e "\t\e[1;35m ▶▶ Campo 1: Padrón | Campo 2: Departamento | Campo 3:
Calle | Campo 4: N° Puerta | Campo 5: Apto |\e[0m"
echo -e "\n"
echo -e "\t\e[1;35m ▶▶ Campo 6: Tamaño | Campo 7: Inmueble | Campo 8:
Servicio |\e[0m"
echo -e "\t\e[32m \c"
cat -n "Inmuebles/$pad.txt" 2> errorfile.txt

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 12


echo -e "\n"
echo -e "\e[1;31m ▶▶ Ingrese el número de campo que desea modificar. Presione
0 para eliminar la línea entera.\e[0m"
echo -e "\e[33m \c"
read campo

if [ "$campo" = "0" ]; then


sed -i "${linea}d" "Inmuebles/$pad.txt"

else

echo -e "\n"
echo -e "\e[1;31m ▶▶ Ingrese el dato que quiere actualizar o deje en blanco para
dejar el campo vacío y presione Enter.\e[0m"
echo -e "\e[33m \c"
read nuevoDato

awk -v field="$campo" -v newData="$nuevoDato" 'BEGIN {FS=OFS=":"}


{$field=gensub(/:/, "", "g", newData)}1' "Inmuebles/$pad.txt" > temp.txt

mv temp.txt "Inmuebles/$pad.txt"
fi

lineaM=$(sed -n "${linea}p" "Inmuebles/$pad.txt")


echo -e "\e[1;33m Linea actualizada: $lineaM.\e[0m"
sleep 7
clear

elif [ "$tipo" == "HABITABLE" ]; then

echo -e "\n"
echo -e "\t\e[1;35m ▶▶ Campo 1: Padrón | Campo 2: Departamento | Campo 3:
Calle | Campo 4: N° Puerta | Campo 5: Apto | \e[0m"
echo -e "\n"
echo -e "\t\e[1;35m ▶▶ Campo 6: Tamaño | Campo 7: Tipo de Inmueble | Campo 8:
Inmueble | Campo 9: Cantidad de Baños |\e[0m"
echo -e "\n"
echo -e "\t\e[1;35m ▶▶ Campo 10: Cantidad de Habitaciones | Campo 11:
Comodidades |\e[0m"
echo -e "\n"
echo -e "\t\e[32m \c"
cat -n "Inmuebles/$pad.txt" 2> errorfile.txt

echo -e "\n"
echo -e "\e[1;31m ▶▶ Ingrese el número de campo que desea modificar. Presione
0 para eliminar la línea entera.\e[0m"

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 13


echo -e "\e[33m \c"
read campo

if [ "$campo" = "0" ]; then


sed -i "${linea}d" "Inmuebles/$pad.txt"

else

echo -e "\n"
echo -e "\e[1;31m ▶▶ Ingrese el dato que quiere actualizar o deje en blanco para
dejar el campo vacío y presione Enter.\e[0m"
echo -e "\e[33m \c"
read nuevoDato

awk -v field="$campo" -v newData="$nuevoDato" 'BEGIN {FS=OFS=":"}


{$field=gensub(/:/, "", "g", newData)}1' "Inmuebles/$pad.txt" > temp.txt

mv temp.txt "Inmuebles/$pad.txt"

fi

lineaM=$(sed -n "${linea}p" "Inmuebles/$pad.txt")


echo -e "\e[1;33m Linea actualizada: $lineaM.\e[0m"
sleep 5
clear

else
echo -e "\e[1;31m ▶▶ TERRENO/HABITABLE mal escrito, escriba tal y como
se muestra.\e[0m"
sleep 2.5
clear
fi
;;

0)

clear
echo -e "\n\n"
echo -e
"\t\e[1;31m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;31m Volviendo al Menú anterior. \e[0m"
echo -e
"\t\e[1;31m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 2
clear
reingresar=0
;;

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 14


*)
echo -e "\e[1;35m ▶▶Letra incorrecta, escriba "C" o "I" tal y como se
muestra.\e[0m"
;;
esac
done
;;

4)
reingresar=-1
while [ "$reingresar" != 0 ]; do
clear
echo -e "\n"
echo -e "\e[31m\t\t »»————-
█▀▀ █▀█ █▄░█ █▀ █░█ █░░ ▀█▀ ▄▀█ █▀▄ █▀▀
█▀▄ ▄▀█ ▀█▀ █▀█ █▀ ————-««\e[0m"
echo -e "\e[31m\t\t »»————-
█▄▄ █▄█ █░▀█ ▄█ █▄█ █▄▄ ░█░ █▀█ █▄▀ ██▄
█▄▀ █▀█ ░█░ █▄█ ▄█ ————-««\e[0m\n\n"
echo -e "\n"

echo -e "\e[1;31m ▶▶ Ingrese "C" para consultar datos del Cliente o "I" para Inmuebles (0
para volver al Menú anterior).\e[0m"
echo -e "\e[1;33m \c"
read con

if [ "$con" = "C" ]; then


ls Clientes/*.txt 2> errorfile.txt
echo -e "\n"
echo -e "\e[1;31m ▶▶ Ingrese cédula sin puntos ni guiones.\e[0m"
echo -e "\e[1;33m \c"
read ced

if [[ $ced =~ ^[0-9]{8}$ ]]; then

if [ ! -z "$ced" ]; then
echo -e "\t" ▶▶ Cédula: "$(grep "$ced" "Clientes/$ced.txt" | cut -d ":" -f1)"
echo -e "\t" ▶▶ Nombre: "$(grep "$ced" "Clientes/$ced.txt" | cut -d ":" -f2)"
echo -e "\t" ▶▶ Apellido: "$(grep "$ced" "Clientes/$ced.txt" | cut -d ":" -f3)"
echo -e "\t" ▶▶ Dirección: "$(grep "$ced" "Clientes/$ced.txt" | cut -d ":" -f4)"
echo -e "\t" ▶▶ Teléfono: "$(grep "$ced" "Clientes/$ced.txt" | cut -d ":" -f5)"
echo -e "\t" ▶▶ Email: "$(grep "$ced" "Clientes/$ced.txt" | cut -d ":" -f6)"
echo -e "\n"
echo -e "\e[1;31m ▶▶ Presiona Enter para continuar.\e[0m"
read enter
else
echo -e "\n\e[1;35m ▶▶ Cédula inválida, intente nuevamente.\e[0m"

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 15


sleep 2
clear
fi
else
echo -e "\e[1;35m ▶▶ Cédula inválida, intente nuevamente.\e[0m"
sleep 2
clear
fi

elif [ "$con" = "I" ]; then


ls Inmuebles/*.txt 2> errorfile.txt
echo -e "\n"
echo -e "\e[1;31m ▶▶ Ingrese padrón para buscar.\e[0m"
echo -e "\e[1;33m \c"
read pad

echo -e "\n\e[1;31m ▶▶ Ingrese el Tipo de Inmueble: \"TERRENO\" o


\"HABITABLE\".\e[0m"
echo -e "\e[1;33m \c"
read tipo

if [ "$tipo" == "TERRENO" ]; then

if [ ! -z "$pad" ]; then
echo -e "\t" ▶▶ Padrón: "$(grep "$pad" "Inmuebles/$pad.txt" | cut -d ":" -f1)"
echo -e "\t" ▶▶ Departamento: "$(grep "$pad" "Inmuebles/$pad.txt" | cut -d ":" -f2)"
echo -e "\t" ▶▶ Dirección: "$(grep "$pad" "Inmuebles/$pad.txt" | cut -d ":" -f3)"
echo -e "\t" ▶▶ Precio: "$(grep "$pad" "Inmuebles/$pad.txt" | cut -d ":" -f4)"
echo -e "\t" ▶▶ Tamaño: "$(grep "$pad" "Inmuebles/$pad.txt" | cut -d ":" -f5)"
echo -e "\t" ▶▶ Tipo de Inmueble: "$(grep "$pad" "Inmuebles/$pad.txt" | cut -d ":" -f6)"
echo -e "\t" ▶▶ Servicios: "$(grep "$pad" "Inmuebles/$pad.txt" | cut -d ":" -f7)"
echo -e "\n"
echo -e "\e[1;31m ▶▶ Presiona Enter para continuar.\e[0m"
read enter
else
echo -e "\e[1;35m ▶▶ Padrón inválido, intente nuevamente.\e[0m"
sleep 2
clear
fi
elif [ "$tipo" == "HABITABLE" ]; then
pad=$(grep "Padrón: $padron" "Inmuebles/$pad.txt")

if [ ! -z "$pad" ]; then
echo -e "\t" ▶▶ Padrón: "$(grep "$pad" "Inmuebles/$pad.txt" | cut -d ":" -f2)"
echo -e "\t" ▶▶ Departamento: "$(grep "$pad" "Inmuebles/$pad.txt" | cut -d ":" -f3)"
echo -e "\t" ▶▶ Dirección: "$(grep "$pad" "Inmuebles/$pad.txt" | cut -d ":" -f4)"
echo -e "\t" ▶▶ Precio: "$(grep "$pad" "Inmuebles/$pad.txt" | cut -d ":" -f5)"

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 16


echo -e "\t" ▶▶ Tamaño: "$(grep "$pad" "Inmuebles/$pad.txt" | cut -d ":" -f6)"
echo -e "\t" ▶▶ Tipo de Inmueble: "$(grep "$pad" "Inmuebles/$pad.txt" | cut -d ":" -f7)"
echo -e "\t" ▶▶ Inmueble: "$(grep "$pad" "Inmuebles/$pad.txt" | cut -d ":" -f8)"
echo -e "\t" ▶▶ Cantidad de Baños: "$(grep "$pad" "Inmuebles/$pad.txt" | cut -d ":" -f9)"
echo -e "\t" ▶▶ Cantidad de Habitaciones: "$(grep "$pad" "Inmuebles/$pad.txt" | cut -d
":" -f10)"
echo -e "\t" ▶▶ Comodidades: "$(grep "$pad" "Inmuebles/$pad.txt" | cut -d ":" -f11)"
else
echo -e "\n"
echo -e "\e[1;35m ▶▶ Padrón inválido, intente nuevamente.\e[0m"
sleep 2
clear
fi
fi
elif [ "$con" = "0" ]; then
reingresar=0
sleep 2
clear
else
echo -e " \e[31m"
echo -e "\e[1;35m ▶▶ Dato inválido, verifique nuevamente.\e[0m"
sleep 2
tput cuu 6
tput ed
sleep 1
fi
done
;;

5)

reingresar=-1
while [ $reingresar != 0 ];
do

clear
echo -e "\n"
echo -e "\e[31m\t\t »»————- ▄▀█ █▀▄▀█ █▄▄
█▀▀ █▀█ █▄░█ ▀█▀ █▀█ ▄▀█ ▀█▀ █▀█ █▀ ————-««\e[0m"
echo -e "\e[31m\t\t »»————- █▀█ █░▀░█ █▄█
█▄▄ █▄█ █░▀█ ░█░ █▀▄ █▀█ ░█░ █▄█ ▄█ ————-««\e[0m\n\n"
echo -e "\n"

echo -e "\e[1;31m ▶▶ Ingrese C-Crear contrato, M-Modificar contrato y B-Borrar un


contrato (0 para volver al Menú anterior).\e[0m"
echo -e "\e[1;33m \c"
read amb

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 17


case $amb in

C)
sleep 2
sh contratos.sh
;;

M)

ls Contratos/*.txt 2> errorfile.txt

echo -e "\e[1;31m ▶▶ Ingrese Id de contrato para modificarlo. Presione 0 para volver


al Menú Anterior.\e[0m"
echo -e "\e[1;33m \c"
read modCon

if [ "$modCon" = "0" ]; then


reingresar=0
clear
continue
fi

echo -e "\n"
echo -e "\t\e[1;35m ▶▶ Campo 1: Id Contrato | Campo 2: Tipo de contrato | Campo
3: Cliente | Campo 4: Inmueble | Campo 5: Fecha de Inicio | \e[0m\n"
echo -e "\n"
echo -e "\t\e[1;35m ▶▶ Campo 6: Fecha Final | Campo 7: Duración | Campo 8:
Precio | Campo 9: Garantia | Campo 10: Descripcion .\e[0m\n"
echo -e "\n"
echo -e "\t\e[32m \c"
cat -n "Contratos/$modCon.txt"
echo -e "\n"

echo -e "\n\e[1;31m ▶▶ Ingrese el número de campo que desea modificar.


Presione 0 para eliminar la línea completa.\e[0m"
echo -e "\e[33m \c"
read campo

if [ "$campo" = "0" ]; then


sed -i "${linea}d" "Contratos/$modCon.txt"

else
echo -e "\n"
echo -e "\n\e[1;31m ▶▶ Ingrese el dato que quiere actualizar o deje en
blanco para dejar el campo vacío y presione Enter.\e[0m"
echo -e "\e[33m \c"
read nuevoDato

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 18


awk -v field="$campo" -v newData="$nuevoDato" 'BEGIN {FS=OFS=":"}
{$field=gensub(/:/, "", "g", newData)}1' "Contratos/$modCon.txt" > temp.txt

mv temp.txt "Contratos/$modCon.txt"

sleep 3
fi

lineaM=$(sed -n "${linea}p" "Contratos/$modCon.txt")


echo -e "\e[1;33m Línea actualizada: $lineaM.\e[0m"
sleep 6
clear
;;

B)

echo -e "\e[1;31m ▶▶ Ingrese id de contrato para eliminar.\e[0m"


echo -e "\e[33m \c"
read eliCon

if [ "$eliCon" == "$idContrato" ] && [ -f "Contratos/$idcontrato.txt" ]; then


rm -i "Contratos/$idcontrato.txt"
else
echo -e "\e[1;35m ▶▶ Id de contrato incorrecto, intente nuevamente.\e[0m"
echo -e "\n"
sleep 2
fi
;;

0)
clear
echo -e "\n\n"
echo -e
"\t\e[1;31m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;31m Volviendo al Menú anterior. \e[0m"
echo -e
"\t\e[1;31m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 2
clear
reingresar=0
;;

*)
echo -e "\e[1;35m ▶▶Letra incorrecta, escriba "C" o "I" tal y como se
muestra.\e[0m"
;;

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 19


esac
done
;;

0)
clear
echo -e "\n\n"
echo -e
"\t\e[1;31m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;31m Saliendo del Programa.\e[0m"
echo -e
"\t\e[1;31m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"
echo -e
"\t\e[1;34m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;34m Saliendo del Programa..\e[0m"
echo -e
"\t\e[1;34m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"
echo -e
"\t\e[1;32m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;32m Saliendo del Programa...\e[0m"
echo -e
"\t\e[1;32m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"
echo -e
"\t\e[1;31m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;31m Saliendo del Programa.\e[0m"
echo -e
"\t\e[1;31m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"
echo -e
"\t\e[1;34m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;34m Saliendo del Programa..\e[0m"
echo -e
"\t\e[1;34m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 20


echo -e
"\t\e[1;32m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;32m Saliendo del Programa...\e[0m"
echo -e
"\t\e[1;32m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"
echo -e
"\t\e[1;31m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;31m Saliendo del Programa.\e[0m"
echo -e
"\t\e[1;31m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"
echo -e
"\t\e[1;34m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;34m Saliendo del Programa..\e[0m"
echo -e
"\t\e[1;34m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"
echo -e
"\t\e[1;32m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;32m Saliendo del Programa...\e[0m"
echo -e
"\t\e[1;32m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
i=0
clear
;;

*)
if [ ! -z "$op" ] && [[ $op =~ ^[0-9]{8}$ ]]; then
if grep -q "$op:" "Login/datosLoginCEO.txt"; then
sh ceo.sh
i=0

elif grep -q "$op:" "Login/datosLoginGERENTE.txt"; then


sh gerente.sh
i=0

else

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 21


echo -e "\n"
echo -e "\t\e[1;31m ▶▶ Opción o cédula incorrecta, intente nuevamente.\e[0m"
sleep 2
clear
fi
fi
;;

esac
done

3) Gerente.sh
#!/bin/bash

printf '\e[8;50;150t' #comando que me permite abrir la terminal del tamaño que quiero

i=-1
while [ $i != 0 ];
do

clear
echo -e "\n"
echo -e "\e[1;34m\t\t
█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█ "
echo -e "\e[1;34m\t\t █░░ ░█▀▀█ ░█▀▀▀ ░█▀▀█ ░█▀▀▀ ░█▄─░█ ▀▀█▀▀
░█▀▀▀ ░░█ "
echo -e "\e[1;34m\t\t █░░ ░█─▄▄ ░█▀▀▀ ░█▄▄▀ ░█▀▀▀ ░█░█░█ ─░█──
░█▀▀▀ ░░█ "
echo -e "\e[1;34m\t\t █░░ ▒█▄▄█ ░█▄▄▄ ░█─░█ ░█▄▄▄ ░█──▀█ ─░█──
░█▄▄▄ ░░█ "
echo -e "\e[1;34m\t\t
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
\e[1;31m\n\n"

echo -e "\e[31m\t\t »»————- █▀▄▀█ █▀▀ █▄░█ █░█ ————-««"


echo -e "\e[31m\t\t »»————- █░▀░█ ██▄ █░▀█ █▄█ ————-««"
echo -e "\n"

echo -e "\t\e[1;34m ▶▶ 1. Alta a los contratos en espera.\e[0m"


echo -e "\t\e[1;34m ▶▶ 2. Baja de Clientes.\e[0m"
echo -e "\t\e[1;34m ▶▶ 3. Baja de Inmuebles.\e[0m"
echo -e "\t\e[1;34m ▶▶ 4. Acceso al Menú Administrativo.\e[0m"
echo -e "\t\e[1;34m ▶▶ 0. Salir\e[0m\n"

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 22


echo -e "\t\e[1;34m ▶▶ Ingrese una opción o su cédula para acceder a su Menú:
\e[0m"
echo -e "\t\e[1;33m \c"
read op

clear
case $op in

1)

if [ ! -d "Contatos/ContratosOK" ]; then
mkdir -p "Contratos/ContratosOK"
fi

registrar=0
while [ $registrar != 1 ];
do
echo -e "\n"
echo -e "\e[31m\t\t »»————-
▄▀█ █░░ ▀█▀ ▄▀█ █▀ █▀▄ █▀▀
█▀▀ █▀█ █▄░█ ▀█▀ █▀█ ▄▀█ ▀█▀ █▀█ █▀ ————-««\e[0m"
echo -e "\e[31m\t\t »»————-
█▀█ █▄▄ ░█░ █▀█ ▄█ █▄▀ ██▄
█▄▄ █▄█ █░▀█ ░█░ █▀▄ █▀█ ░█░ █▄█ ▄█
————-««\e[0m\n"
echo -e "\n".

if [ ! -d "Contratos" ]; then

echo -e "\t\e[1;34m ▶▶ No existe ningún contrato, ingrese uno desde


el Menú Administrativo. \e[0"
sleep 3
clear

else
listado=($(ls Contratos)) #arreglo que contiene los nombres de los
contratos

echo -e "\e[1;34m ▶▶ Seleccione un contrato de la lista (0 para volver


al menú anterior). \e[0m"
echo -e "\e[1;33m"

PS3=$'\e[1;34m ▶▶ Contrato n°: ' #comando que me permite


colocarle el espacio a la variable para que cuando el usuario escriba, lo haga a la
misma altura que la pregunta.

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 23


#comando que me permite crear un listado de opciones y que
el usuario elija./ [@] expande el arreglo con todos los elementos entre comillas, si lo
sacamos solo aparece el primero

select contrato in "${listado[@]}"; do

if [ "$REPLY" == "0" ]; then


break 2 # Salir del bucle exterior si se selecciona 0
sleep 1
clear
fi

if [ -n "$contrato" ]; then
echo -e "\e[1;34m ▶▶ Has seleccionado
el contrato $contrato \e[0m"
echo -e "\n"
else
echo -e "\e[1;35m ▶▶ Opción incorrecta,
intente nuevamente.\e[0m"
sleep 2
clear
break
fi

reingresarResp=-1
while [ $reingresarResp != 0 ];
do

echo -e "\e[1;34m ▶▶ ¿Deseas darle de alta?


Escribe "SI/NO" tal y como se muestra.\e[0m"
echo -e "\e[1;33m \c"
read -r resp

if [ "$resp" = "SI" ]; then


mv "Contratos/$contrato"
"Contratos/ContratosOK/$contrato"
sleep 1.5
echo -e "\e[1;34m ▶▶ El contrato ha sido
dado de alta correctamente.\e[0m"
sleep 1
clear
break 2

elif [ "$resp" = "NO" ]; then


sleep 2

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 24


reingresarResp=-1
sleep 1
tput cuu 6
tput ed
sleep 1
break

else
echo -e "\e[1;35m ▶▶ SI/NO mal
escrito, escribalo tal y como se muestra.\e[0m"
sleep 2
tput cuu 3
tput ed
sleep 1
reingresarResp=1
fi
done

done
fi
done
;;

2)

clear
registrar=-1
while [ $registrar != 0 ];
do

clear
echo -e "\n"
echo -e "\e[31m\t\t »»————- █▄▄ ▄▀█ ░░█ ▄▀█
█▀▄ █▀▀ █▀▀ █░░ █ █▀▀ █▄░█ ▀█▀ █▀▀ █▀
————-««\e[0m"
echo -e "\e[31m\t\t »»————- █▄█ █▀█ █▄█ █▀█
█▄▀ ██▄ █▄▄ █▄▄ █ ██▄ █░▀█ ░█░ ██▄ ▄█
————-««\e[0m\n"
echo -e "\n"

echo -e "\e[1;33m"
ls Clientes/*.txt 2> errorfile.txt

echo -e "\e[1;34m ▶▶ Ingrese SOLO la cédula del Cliente para


dar de baja SIN EL "".TXT"" (0 para volver al Menú anterior).\e[0m"

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 25


echo -e "\e[1;33m \c"
read clienteBorrar

if [ -f "Clientes/$clienteBorrar.txt" ]; then

if [ ! -z "$clienteBorrar" ] && [[ ! "$clienteBorrar" =~ ^[0-9]{8}$ ]]; then

echo -e "\e[1;34m ▶▶ El cliente no existe, intente nuevamente


con otra cédula.\e[0m"
sleep 2
clear

else
rm "Clientes/$clienteBorrar.txt"
echo -e "\e[1;34m ▶▶ El archivo ha sido eliminado
correctamente.\e[0m"
sleep 2
clear

fi

elif [[ "$clienteBorrar" = "0" ]]; then


registrar=0
clear

else

if [ ! -d "Clientes" ]; then
echo -e "\e[1;34m ▶▶ No existe Clientes, intente ingresar uno
desde el Menú Administrativo. \e[0m"
echo -e "\n"
sleep 3
clear
fi
fi
done
;;

3)

reg=-1
while [ $reg != 0 ];
do

clear

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 26


echo -e "\n"
echo -e "\e[31m\t\t »»————- █▄▄ ▄▀█ ░░█ ▄▀█
█▀▄ █▀▀ █ █▄░█ █▀▄▀█ █░█ █▀▀ █▄▄ █░░ █▀▀ █▀
————-««\e[0m"
echo -e "\e[31m\t\t »»————- █▄█ █▀█ █▄█ █▀█
█▄▀ ██▄ █ █░▀█ █░▀░█ █▄█ ██▄ █▄█ █▄▄ ██▄ ▄█
————-««\e[0m\n"
echo -e "\n"

echo -e "\e[1;33m"
ls Inmuebles/*.txt 2> errorfile.txt

echo -e "\e[1;34m ▶▶ Ingrese SOLO el padron del inmueble


para dar de baja SIN EL "".TXT"" (0 para volver al Menú anterior).\e[0m"
echo -e "\e[1;33m \c"
read inmuebleBorrar

if [ -f "Inmuebles/$inmuebleBorrar.txt" ]; then

if [ -z "$inmuebleBorrar" ]; then

echo -e "\e[1;34m ▶▶ El inmueble no existe,


intente nuevamente con otro padron.\e[0m"
sleep 2
clear

else

rm "Inmuebles/$inmuebleBorrar.txt"
echo -e "\e[1;34m ▶▶ El archivo ha sido
eliminado correctamente.\e[0m"
sleep 2
clear

fi
elif [[ "$inmuebleBorrar" = "0" ]]; then
reg=0
clear

else

if [ ! -d "Inmuebles" ]; then
echo -e "\e[1;34m ▶▶ No existen Inmuebles,
intente ingresar uno desde el Menú Administrativo. \e[0m"
echo -e "\n"
sleep 3
clear

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 27


fi
fi
done
;;

4)
sh admin.sh
i=0
;;

0)
clear
echo -e "\n\n"
i=0
echo -e
"\t\e[1;31m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;31m Saliendo del Programa.\e[0m"
echo -e
"\t\e[1;31m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"
echo -e
"\t\e[1;34m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;34m Saliendo del Programa..\e[0m"
echo -e
"\t\e[1;34m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"
echo -e
"\t\e[1;32m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;32m Saliendo del Programa...\e[0m"
echo -e
"\t\e[1;32m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"
echo -e
"\t\e[1;31m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;31m Saliendo del Programa.\e[0m"
echo -e
"\t\e[1;31m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 28


echo -e
"\t\e[1;34m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;34m Saliendo del Programa..\e[0m"
echo -e
"\t\e[1;34m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"
echo -e
"\t\e[1;32m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;32m Saliendo del Programa...\e[0m"
echo -e
"\t\e[1;32m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"
echo -e
"\t\e[1;31m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;31m Saliendo del Programa.\e[0m"
echo -e
"\t\e[1;31m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"
echo -e
"\t\e[1;34m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;34m Saliendo del Programa..\e[0m"
echo -e
"\t\e[1;34m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"
echo -e
"\t\e[1;32m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;32m Saliendo del Programa...\e[0m"
echo -e
"\t\e[1;32m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
i=0
clear
;;

*)

if [ ! -z "$op" ] && [[ $op =~ ^[0-9]{8}$ ]]; then


if grep -q "$op:" "Login/datosLoginCEO.txt"; then

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 29


sh ceo.sh
reingresar=0

else
echo -e "\n"
echo -e "\t\e[1;31m ▶▶ Opción o cédula incorrecta, intente
nuevamente.\e[0m"
sleep 2
clear
fi
fi
;;

esac
done

4) CEO.sh
#!/bin/bash

printf '\e[8;50;150t'

clear
prog=-1
while [ $prog != 0 ];
do

echo -e "\n"
echo -e "\e[1;32m\t\t █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█ \e[0m"
echo -e "\e[1;32m\t\t █░░ ░█████╗░███████╗░█████╗░ ░░█ \e[0m"
echo -e "\e[1;32m\t\t █░░ ██╔══██╗██╔════╝██╔══██╗ ░░█ \e[0m"
echo -e "\e[1;32m\t\t █░░ ██║░░╚═╝█████╗░░██║░░██║ ░░█ \e[0m"
echo -e "\e[1;32m\t\t █░░ ██║░░██╗██╔══╝░░██║░░██║ ░░█ \e[0m"
echo -e "\e[1;32m\t\t █░░ ╚█████╔╝███████╗╚█████╔╝ ░░█ \e[0m"
echo -e "\e[1;32m\t\t █░░ ╚════╝░╚══════╝░╚════╝░ ░░█ \e[0m"
echo -e "\e[1;32m\t\t █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█ \e[0m\n\n"

echo -e "\e[31m\t\t »»————- █▀▄▀█ █▀▀ █▄░█ █░█ ————-««"


echo -e "\e[31m\t\t »»————- █░▀░█ ██▄ █░▀█ █▄█ ————-««"
echo -e "\n"

echo -e "\t\e[1;32m ▶▶ 1. Crear nuevos usuarios.\e[0m"

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 30


echo -e "\t\e[1;32m ▶▶ 2. Modificar precios.\e[0m"
echo -e "\t\e[1;32m ▶▶ 3. Acceso al Menú de Gerencia.\e[0m"
echo -e "\t\e[1;32m ▶▶ 4. Acceso al Menú de Administración.\e[0m"
echo -e "\t\e[1;32m ▶▶ 5. Consultar autenticaciones.\e[0m"
echo -e "\t\e[1;32m ▶▶ 6. Respaldar Datos.\e[0m"
echo -e "\t\e[1;32m ▶▶ 0. Salir\e[0m\n"

echo -e "\t\e[1;32m ▶▶ Ingrese una opción: \e[0m"


echo -e "\t\e[1;33m \c"
read op

case $op in

1)

k=0
while [ "$k" == "0" ]; do
clear

echo -e "\n"
echo -e "\e[31m\t\t »»————- █▄░█ █░█ █▀▀ █░█ █▀█ █▀
█░█ █▀ █░█ ▄▀█ █▀█ █ █▀█ █▀ ————-««\e[0m"
echo -e "\e[31m\t\t »»————- █░▀█ █▄█ ██▄ ▀▄▀ █▄█ ▄█
█▄█ ▄█ █▄█ █▀█ █▀▄ █ █▄█ ▄█ ————-««\e[0m\n\n"
echo -e "\n"

repetir=-1
while [ $repetir != 0 ]; do

echo -e "\e[1;32m ▶▶ Ingrese la cédula como nombre de Usuario:\e[0m"


echo -e "\e[1;33m \c"
read user

if [ ! -z "$user" ] && [[ "$user" =~ ^[0-9]{8}$ ]]; then


if ! grep -q "^$user:" Login/datosLoginADMIN.txt && ! grep -q
"^$user:" Login/datosLoginGERENTE.txt && ! grep -q "^$user:" Login/datosLoginCEO.txt;
then

echo -e "\n\e[1;32m ▶▶ Ingrese la contraseña:\e[0m"

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 31


echo -e "\e[1;33m \c"
read pass

if [ ! -z "$pass" ]; then
x=0
while [ $x -eq 0 ]; do
echo -e "\n\e[1;32m ▶▶ Ingrese el tipo de usuario: A para
Administrativo, G para Gerente y C Ceo.\e[0m"
echo -e "\e[1;33m \c"
read tipo

case $tipo in
A)
echo -e "\n$user:$pass" >> Login/datosLoginADMIN.txt
x=1
echo -e "\n\e[1;34m ▶▶ Datos guardados correctamente.\e[0m"
sleep 3
clear
repetir=0
;;
G)
echo -e "\n$user:$pass" >> Login/datosLoginGERENTE.txt
x=1
echo -e "\n\e[1;34m ▶▶ Datos guardados correctamente.\e[0m"
sleep 3
clear
repetir=0
;;
C)
echo -e "\n$user:$pass" >> Login/datosLoginCEO.txt
x=1
echo -e "\n\e[1;34m ▶▶ Datos guardados correctamente.\e[0m"
sleep 3
clear
repetir=0
;;
*)
echo -e "\n\e[1;35m ▶▶ Tipo no válido, vuelve a ingresarlo.\e[0m"
sleep 3
clear
x=0
;;
esac
done
else
echo -e "\n\e[1;35m ▶▶ Ingrese la contraseña.\e[0m"
sleep 2
echo -e "\n"

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 32


tput cuu 5
tput ed
sleep 1

fi
else
echo -e "\e[1;32m ▶▶ La cédula ya existe en el archivo, intente
nuevamente.\e[0m"
sleep 2
echo -e "\n"
tput cuu 5
tput ed
sleep 1
fi
else
echo -e "\e[1;32m ▶▶ La cédula es inválida, intente nuevamente.\e[0m"
sleep 2
echo -e "\n"
tput cuu 5
tput ed
sleep 1
fi
done

k=20
done
clear

;;

2)

clear
echo -e "\n"
echo -e "\e[31m\t\t »»————-
▄▀█ █▀▀ ▀█▀ █░█ ▄▀█ █░░ █ ▀█ ▄▀█ █▀▀ █ █▀█ █▄░█
█▀▄ █▀▀ █░░ █▀█ █▀█ █▀▀ █▀▀ █ █▀█ ————-««\e[0m"
echo -e "\e[31m\t\t »»————
█▀█ █▄▄ ░█░ █▄█ █▀█ █▄▄ █ █▄ █▀█ █▄▄ █ █▄█ █░▀█
█▄▀ ██▄ █▄▄ █▀▀ █▀▄ ██▄ █▄▄ █ █▄█ ————-««\e[0m\n\n"
echo -e "\n"

ls Inmuebles/*.txt 2> errorfile.txt


asa=-1
while [ $asa != "0" ]; do

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 33


echo -e "\n\e[1;35m ▶▶ Ingrese el padrón del inmueble que desea
cambiar el precio. 0 para volver al Menú anterior.\e[0m"
echo -e "\e[1;33m \c"
read inmueble

if [ "$inmueble" == "0" ]; then


sleep 0.5
clear
asa=0
clear

elif [ -f "Inmuebles/$pad.txt" ] && [ ! -z "$inmueble" ]; then


archivo="Inmuebles/""$inmueble.txt"
echo -e "\n\e[1;35m ▶▶ Ingrese el nuevo precio del
inmueble."
echo -e "\e[1;33m \c"
read nuevo_precio
sed -i "s/\([^:]*:[^:]*:[^:]*:\)[^:]*\(:.*\)/\1$nuevo_precio\2/"
"$archivo"
echo -e "\n\e[1;35m ▶▶ Precio modificado
correctamente: $nuevo_precio.\e[0m"
sleep 1.5
asa=1
clear
else
echo -e "\n\e[1;35m ▶▶ Padrón inexistente, ingrese
nuevamente.\e[0m"
sleep 2
echo -e "\n"
tput cuu 7
tput ed
sleep 1
fi

done
;;

3)
sh gerente.sh
;;

4)
sh admin.sh

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 34


;;

5)
clear
echo -e "\n"
echo -e "\e[31m\t\t »»————-
▄▀█ █░█ ▀█▀ █▀▀ █▄░█ ▀█▀ █ █▀▀ ▄▀█ █▀▀ █ █▀█ █▄░█ █▀
▀ █▀ ————-««\e[0m"
echo -e "\e[31m\t\t »»————
█▀█ █▄█ ░█░ ██▄ █░▀█ ░█░ █ █▄▄ █▀█ █▄▄ █ █▄█ █░▀█ ██
▄ ▄█ ————-««\e[0m\n\n"

echo -e "\n"
echo -e "\e[1;34m\c"
cat -n "Log.txt" 2> errorfile.txt
echo -e "\n\e[1;35m ▶▶ Presione Enter para continuar.\e[0m"
read enter
clear
;;

6)
clear

clear
echo -e "\n"
echo -e "\e[31m\t\t »»————-
█▀█ █▀▀ █▀ █▀█ ▄▀█ █░░ █▀▄ █▀█ █▀ ————-««\e[0m"
echo -e "\e[31m\t\t »»————
█▀▄ ██▄ ▄█ █▀▀ █▀█ █▄▄ █▄▀ █▄█ ▄█ ————-««\e[0m\n\n"

if [ -d "Login" ] || [ -d "Contratos" ] || [ -d "Clientes" ] || [ -d "Inmuebles" ]; then

echo -e "\n\e[1;35m ▶▶ No existe ningún dato para respaldar.\e[0m"


echo -e "\e[1;33m \c"
sleep 3
clear

else

if [ -d "Respaldos/Login" ] && [ -d "Respaldos/Contratos" ] && [ -d


"Respaldos/Clientes" ] && [ -d "Respaldos/Inmuebles" ]; then
cp -r Login Respaldos/Login
cp -r Contratos Respaldos/Contratos
cp -r Clientes Respaldos/Clientes
cp -r Inmuebles Respaldos/Inmuebles

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 35


echo -e "\n\e[1;34m ▶▶ Datos respaldados correctamente.\e[0m"
sleep 3
clear
else

mkdir -p Respaldos/Login
mkdir -p Respaldos/Contratos
mkdir -p Respaldos/Clientes
mkdir -p Respaldos/Inmuebles
cp -r Login Respaldos/Login
cp -r Contratos Respaldos/Contratos
cp -r Clientes Respaldos/Clientes
cp -r Inmuebles Respaldos/Inmuebles
echo -e "\n\e[1;34m ▶▶ Datos respaldados correctamente.\e[0m"
sleep 3
clear
fi

fi
;;

0)
clear
echo -e "\n\n"
echo -e
"\t\e[1;31m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;31m Saliendo del Programa.\e[0m"
echo -e
"\t\e[1;31m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"
echo -e
"\t\e[1;34m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;34m Saliendo del Programa..\e[0m"
echo -e
"\t\e[1;34m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"
echo -e
"\t\e[1;32m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;32m Saliendo del Programa...\e[0m"
echo -e
"\t\e[1;32m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 36


echo -e
"\t\e[1;31m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;31m Saliendo del Programa.\e[0m"
echo -e
"\t\e[1;31m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"
echo -e
"\t\e[1;34m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;34m Saliendo del Programa..\e[0m"
echo -e
"\t\e[1;34m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"
echo -e
"\t\e[1;32m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;32m Saliendo del Programa...\e[0m"
echo -e
"\t\e[1;32m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"
echo -e
"\t\e[1;31m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;31m Saliendo del Programa.\e[0m"
echo -e
"\t\e[1;31m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"
echo -e
"\t\e[1;34m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;34m Saliendo del Programa..\e[0m"
echo -e
"\t\e[1;34m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
echo -e "\n\n"
echo -e
"\t\e[1;32m╔═════════.✵.══════════════════════════╗\e[0m"
echo -e "\t\e[1;32m Saliendo del Programa...\e[0m"
echo -e
"\t\e[1;32m╚═════════════════════════.✵.══════════╝\e[0m\n"
sleep 0.5
clear
clear

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 37


prog=0
;;

*)

echo -e "\n\t\e[1;31m ▶▶ Opción incorrecta, intente nuevamente.\e[0m"


sleep 2
clear

;;
esac
done

5) Clientes.sh
#!/bin/bash

printf '\e[8;50;150t'

clear
registrar=0
while [ $registrar != 1 ];
do

echo -e "\n"
echo -e "\e[1;36m\t\t ─────█─▄▀█──█▀▄─█───── \e[0m"
echo -e "\e[1;36m\t\t ────▐▌──────────▐▌──── \e[0m"
echo -e "\e[1;36m\t\t ────█▌▀▄──▄▄──▄▀▐█──── \e[0m"
echo -e "\e[1;36m\t\t ───▐██──▀▀──▀▀──██▌─── \e[0m"
echo -e "\e[1;36m\t\t ──▄████▄──▐▌──▄████▄── \e[0m"
echo -e "\e[1;36m\t\t █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
\e[0m"
echo -e "\e[1;36m\t\t █░░ ░░█ \e[0m"
echo -e "\e[1;36m\t\t █░░ █▀▀ █ █ █▀▀ █▄ █ ▀█▀ █▀▀ █▀ ░░█ \e[0m"
echo -e "\e[1;36m\t\t █░░ █▄▄ █▄▄ █ ██▄ █ ▀█ █ ██▄ ▄█ ░░█ \e[0m"
echo -e "\e[1;36m\t\t █░░ ░░█ \e[0m"
echo -e "\e[1;36m\t\t █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
\e[0m"

echo -e "\n\n\t\t\e[1;31m ╔» • • • • • • • • • ✎ • • • • • • • • • «╗"


echo -e "\t\t\e[1;31m • REGISTRO DE CLIENTES •"
echo -e "\t\t\e[1;31m ╚» • • • • • • • • • ✎ • • • • • • • • • «╝ \e[0m\n\n"

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 38


echo -e "\e[1;36m ▶▶ Ingrese la CÉDULA del cliente sin puntos ni guiones. De lo
contrario, ingrese su cédula para volver al Menú anterior. \e[0m"
echo -e "\e[33m \c"
read -r ced

if [ -z "$ced" ]; then
echo -e "\e[1;35m ▶▶ La cédula no puede estar vacía. Ingrese una cédula válida.\e[0m"
sleep 1.5
clear
continue
fi

if grep -q "$ced:" "Login/datosLoginCEO.txt"; then


sh ceo.sh
registrar=1

elif grep -q "$ced:" "Login/datosLoginGERENTE.txt"; then


sh gerente.sh
registrar=1

elif grep -q "$ced:" "Login/datosLoginADMIN.txt"; then


sh admin.sh
registrar=1

else
if [[ $ced =~ ^[0-9]{8}$ ]] && [ ! -f "Clientes/$ced.txt" ]; then
echo -e "\e[1;35m ▶▶ Cédula ingresada correctamente.\e[0m"
echo -e "\n"
echo -e "\e[1;36m ▶▶ Ingrese su nombre completo.\e[0m"
echo -e "\e[33m \c"
read nomC

echo -e "\n"

fechaReingresar=-1
while [ $fechaReingresar != 0 ];
do

echo -e "\e[1;36m ▶▶ Ingrese su fecha de nacimiento en formato "DD MM AAAA"


(dejando un espacio entre medio).\e[0m"
echo -e "\e[33m \c"
read -r dia mes anio

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 39


if [[ "$dia" =~ ^[0-9]+$ && "$mes" =~ ^[0-9]+$ && "$anio" =~ ^[0-9]+$ ]] && [
"$dia" -gt 0 -a "$dia" -lt 32 ] && [ "$mes" -gt 0 -a "$mes" -lt 13 ] && \
[ "$anio" -gt 1900 -a "$anio" -lt 2004 ]; then

echo -e "\e[1;35m ▶▶ Fecha de nacimiento válida.\e[0m"


echo -e "\n"
sleep 2
fechaReingresar=0
cedulaReingresar=0
registrar=0

else
echo -e "\e[1;35m ▶▶ La fecha es inválida. Ingrese la fecha con el formato "DD
MM AAAA" DEJANDO UN ESPACIO ENTRE MEDIO.\e[0m"
sleep 2
echo -e "\n"
tput cuu 5
tput ed
sleep 1
fi
done

echo -e "\e[1;36m ▶▶ Ingrese su E-Mail.\e[0m"


echo -e "\e[33m \c"
read ema

echo -e "\n"

echo -e "\e[1;36m ▶▶ Ingrese su teléfono.\e[0m"


echo -e "\e[33m \c"
read tel

echo -e "\n"

repetir=-1
while [ $repetir != 0 ];
do

echo -e "\e[1;36m ▶▶ Ingrese qué tipo de cliente es: "DUEÑO/INQUILINO",


tal y como se muestra."
echo -e "\e[33m \c"
read cliTip

if [ ! -d "Clientes" ] && [ ! -f "Clientes/$ced.txt" ]; then


mkdir -p "Clientes"

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 40


touch "Clientes/$ced.txt"
sleep 1

fi

if [ "$cliTip" == "DUEÑO" ]; then


echo -e "\n\e[1;36m ▶▶ Ingrese el Padrón de sus
Inmuebles.\e[0m"
echo -e "\e[33m \c"
read tipoInmuebles

echo -e
""$ced"":""$nomC"":""$dia-$mes-$anio"":""$ema"":""$tel"":""$cliTip"":""$tipoInmuebles"" >>
"Clientes/$ced.txt"
sleep 1.5
echo -e "\n\e[34m ▶▶ Datos guardados correctamente.\e[0m"
registrar=0
fechaReingresar=0
repetir=0
sleep 2
clear

elif [ "$cliTip" == "INQUILINO" ]; then


echo -e "\n\e[1;36m ▶▶ Ingrese el Padrón de los
Inmuebles comprados o alquilados.\e[0m"
echo -e "\e[33m \c"
read tipoInmuebles

echo -e
""$ced"":""$nomC"":""$dia-$mes-$anio"":""$ema"":""$tel"":""$cliTip"":""$tipoInmuebles"" >>
"Clientes/$ced.txt"
sleep 1.5
echo -e "\n\e[34m ▶▶ Datos guardados correctamente.\e[0m"
registrar=0
fechaReingresar=0
repetir=0
sleep 2
clear

else

echo -e "\e[1;35m ▶▶ Ingrese "DUEÑO/INQUILINO" tal y como


se muestra.\e[0m"
sleep 2
echo -e "\n"
tput cuu 5

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 41


tput ed
sleep 1
fi

done

else
echo -e "\e[1;35m ▶▶ La cédula es inválida o esta repetida. Ingrese solo números y
que sean 8 digitos.\e[0m"
echo -e "\n"
sleep 1.5
clear
fechaReingresar=-1
repetir=-1
continue
fi
fi

done

done

6) Inmuebles
#!/bin/bash

printf '\e[8;50;150t'

clear
registrar=0
while [ $registrar != 1 ];
do

echo -e "\n"
echo -e "\e[1;36m\t\t ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0m"
echo -e "\e[1;36m\t\t ▒▒▄▄▄▒▒▒█▒▒▒▒▄▒▒▒▒▒▒▒▒ \e[0m"
echo -e "\e[1;36m\t\t ▒█▀█▀█▒█▀█▒▒█▀█▒▄███▄▒ \e[0m"
echo -e "\e[1;36m\t\t ░█▀█▀█░█▀██░█▀█░█▄█▄█░ \e[0m"
echo -e "\e[1;36m\t\t ░█▀█▀█░█▀████▀█░█▄█▄█░ \e[0m"
echo -e "\e[1;36m\t\t ████████▀█████████████ \e[0m"
echo -e "\e[1;36m\t\t
█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█ \e[0m"
echo -e "\e[1;36m\t\t █░░ ░░█ \e[0m"

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 42


echo -e "\e[1;36m\t\t █░░ █ █▄ █ █▀▄▀█ █ █ █▀▀ █▄▄ █ █▀▀ █▀ ░░█
\e[0m"
echo -e "\e[1;36m\t\t █░░ █ █ ▀█ █ ▀ █ █▄█ ██▄ █▄█ █▄▄ ██▄ ▄█ ░░█
\e[0m"
echo -e "\e[1;36m\t\t █░░ ░░█ \e[0m"
echo -e "\e[1;36m\t\t
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█ \e[0m"

echo -e "\n\n\t\t\e[1;31m ╔» • • • • • • • • • ✎ • • • • • • • • • «╗"


echo -e "\t\t\e[1;31m • REGISTRO DE INMUEBLES: •"
echo -e "\t\t\e[1;31m ╚» • • • • • • • • • ✎ • • • • • • • • • «╝ \e[0m\n"

echo -e "\e[1;36m ▶▶ Ingrese el número de Padrón del Inmueble o su Cédula para


volver a su Menú. \e[0m"
echo -e "\e[33m \c"
read -r padron

if [ -z "$padron" ]; then
echo -e "\e[1;35m ▶▶ El padrón no puede estar vacío. Ingrese una PADRÓN
válido.\e[0m"
sleep 1.5
clear
continue
fi

if grep -q "$padron:" "Login/datosLoginCEO.txt"; then


sh ceo.sh
registrar=1

elif grep -q "$padron:" "Login/datosLoginGERENTE.txt"; then


sh gerente.sh
registrar=1

elif grep -q "$padron:" "Login/datosLoginADMIN.txt"; then


sh admin.sh
registrar=1

else
if [ ! -f "Clientes/$padron.txt" ]; then

echo -e "\e[1;35m ▶▶ Padrón ingresado correctamente.\e[0m"


echo -e "\n"

echo -e "\e[1;36m ▶▶ Ingrese departamento del inmueble.\e[0m"

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 43


echo -e "\e[33m \c"
read departamento

echo -e "\n"

echo -e "\e[1;36m ▶▶ Ingrese dirección del inmueble separadas por un espacio y


con el siguiente formato CALLE N°PUERTA APTO.\e[0m"
echo -e "\e[33m \c"
read -r calle numPuerta apto

echo -e "\n"

precioReingresar=0
while [ $precioReingresar != 1 ];
do

echo -e "\e[1;36m ▶▶ Ingrese precio del inmueble en dólares.\e[0m"


echo -e "\e[33m \c"
read precio

if [[ $precio =~ ^[0-9]+$ ]]; then


echo -e "\e[1;35m ▶▶ Has ingresado el precio correctamente.\e[0m"
echo -e "\n"
sleep 2
precioReingresar=1
else
echo -e "\e[1;35m ▶▶ El precio es incorrecto. Ingrese solo
números.\e[0m"
sleep 2
echo -e "\n"
tput cuu 5
tput ed
sleep 1
fi
done

echo -e "\e[1;36m ▶▶ Ingrese tamaño en metros cuadrados.\e[0m"


echo -e "\e[33m \c"
read tam
echo -e "\n"

tipoReingresar=0
while [ $tipoReingresar != 1 ];
do

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 44


echo -e "\e[1;36m ▶▶ Ingrese qué tipo de inmueble es:
"TERRENO/HABITABLE", tal y como se muestra."
echo -e "\e[33m \c"
read inmTip

if [ ! -d "Inmuebles" ] && [ ! -f "Inmuebles/$padron.txt" ]; then


mkdir -p "Inmuebles"
touch "Inmuebles/$padron.txt"
sleep 1

fi

if [ "$inmTip" == "TERRENO" ]; then


echo -e "\n\e[1;36m ▶▶ Ingrese cuáles son los servicios
del terreno, separelos con un espacio.\e[0m"
echo -e "\e[33m \c"
read serv

echo -e
""$padron"":""$departamento"":""$calle"":""$numPuerta"":""$apto"":""$tam"":""$inmTip"":""$se
rv"":""$precio"" >> "Inmuebles/$padron.txt"
sleep 1.5
echo -e "\n\e[34m ▶▶ Datos guardados
correctamente.\e[0m"
tipoReingresar=1
precioReingresar=1
sleep 2
clear

elif [ "$inmTip" == "HABITABLE" ]; then

tipInmReingresar=0
while [ $tipInmReingresar != 1 ];
do

echo -e "\n\e[1;36m ▶▶ Ingrese qué tipo de inmueble


es: "APARTAMENTO/CASA" tal y como se muestra.\e[0m"
echo -e "\e[33m \c"
read tipInm

if [ "$tipInm" == "APARTAMENTO" ] || [ "$tipInm"


== "CASA" ]; then

echo -e "\n\e[1;36m ▶▶ Ingrese


cantidad de baños.\e[0m"

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 45


echo -e "\e[33m \c"
read cBan

echo -e "\n\e[1;36m ▶▶ Ingrese


cantidad de habitaciones.\e[0m"
echo -e "\e[33m \c"
read cHab

echo -e "\n\e[1;36m ▶▶ Ingrese


comodidades.\e[0m"
echo -e "\e[33m \c"
read com

echo -e
""$padron"":""$departamento"":""$calle"":""$numPuerta"":""$apto"":""$tam"":""$inmTip"":""$tip
Inm"":""$cBan"":""$cHab"":""$com"":""$precio"" >> "Inmuebles/$padron.txt"
sleep 1.5
echo -e "\n\e[34m ▶▶ Datos guardados
correctamente.\e[0m"
sleep 2
tipInmReingresar=1
tipoReingresar=1
precioReingresar=1
clear

else
echo -e "\n\e[34m ▶▶
""APARTAMENTO/CASA"" mal ingresado, ingreselo tal y como se muestra.\e[0m"
sleep 2
tput cuu 5
tput ed
sleep 1.5
fi

done

else
echo -e "\e[1;35m ▶▶ Ingrese "TERRENO/HABITABLE" tal y
como se muestra.\e[0m"
sleep 2
echo -e "\n"
tput cuu 5
tput ed
sleep 1
fi
done

else

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 46


echo -e "\e[1;35m ▶▶ El padrón ingresado es inválido o está
repetido.\e[0m"
echo -e "\n"
sleep 1.5
clear
precioReingresar=0
volver=0
vol=0
continue
fi
fi

done

7) Contratos.sh
#!/bin/bash

printf '\e[8;50;150t'
clear

reingresar=0

while [ $reingresar != 1 ]; do
echo -e "\n"
echo -e "\e[1;36m\t\t ──▄▀▀▀▄─────────────── \e[0m"
echo -e "\e[1;36m\t\t ──█───█─────────────── \e[0m"
echo -e "\e[1;36m\t\t ─███████─────────▄▀▀▄─ \e[0m"
echo -e "\e[1;36m\t\t ░██─▀─██░░█▀█▀▀▀▀█░░█░ \e[0m"
echo -e "\e[1;36m\t\t ░███▄███░░▀░▀░░░░░▀▀░░ \e[0m"
echo -e "\e[1;36m\t\t
█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█ \e[0m"
echo -e "\e[1;36m\t\t █░░ ░░█ \e[0m"
echo -e "\e[1;36m\t\t █░░ █▀▀ █▀█ █▄░█ ▀█▀ █▀█ ▄▀█ ▀█▀ █▀█ █▀
░░█ \e[0m"
echo -e "\e[1;36m\t\t █░░ █▄▄ █▄█ █░▀█ ░█░ █▀▄ █▀█ ░█░ █▄█ ▄█
░░█ \e[0m"
echo -e "\e[1;36m\t\t █░░ ░░█ \e[0m"
echo -e "\e[1;36m\t\t
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█ \e[0m"

echo -e "\n\n\t\t\e[1;31m ╔» • • • • • • • • • ✎ • • • • • • • • • «╗"


echo -e "\t\t\e[1;31m • INGRESO DE DATOS: •"
echo -e "\t\t\e[1;31m ╚» • • • • • • • • • ✎ • • • • • • • • • «╝ \e[0m\n"

echo -e "\e[1;36m ▶▶ Ingrese Id de contrato. Para volver al Menú anterior, ingrese su


CÉDULA.\e[0m"

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 47


echo -e "\e[33m \c"
read -r idcontrato

if [ -z "$idcontrato" ]; then
echo -e "\e[1;35m ▶▶ El ID no puede estar vacío. Ingrese un ID válido.\e[0m"
sleep 1.5
clear
continue
fi

if grep -q "$idcontrato:" "Login/datosLoginCEO.txt"; then


sh ceo.sh
reingresar=1
elif grep -q "$idcontrato:" "Login/datosLoginGERENTE.txt"; then
sh gerente.sh
reingresar=1
elif grep -q "$idcontrato:" "Login/datosLoginADMIN.txt"; then
sh admin.sh
reingresar=1
elif [[ $idcontrato =~ ^[0-9]{8}$ ]] && [ ! -f "Clientes/$idcontrato.txt" ]; then
echo -e "\e[1;35m ▶▶ Id de contrato ingresado correctamente.\e[0m"
echo -e "\n"
else
echo -e "\n"
echo -e "\e[1;36m ▶▶ Ingrese nombre del Cliente involucrado.\e[0m"
echo -e "\e[33m \c"
read cliente

echo -e "\n"
echo -e "\e[1;36m ▶▶ Ingrese apellido del Cliente involucrado.\e[0m"
echo -e "\e[33m \c"
read apellidoCliente

echo -e "\n"
echo -e "\e[1;36m ▶▶ Ingrese Padrón involucrado.\e[0m"
echo -e "\e[33m \c"
read padron

repetir=-1

while [ $repetir != 0 ]; do
echo -e "\n"
echo -e "\e[1;36m ▶▶ Ingrese tipo de contrato: "COMPRA/VENTA/ALQUILER", tal y
como se muestra."
echo -e "\e[33m \c"
read tipo

if [ ! -d "Contratos" ] && [ ! -f "Contratos/$idcontrato.txt" ]; then

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 48


mkdir -p "Contratos"
touch "Contratos/$idcontrato.txt"
sleep 1
fi

if [ "$tipo" == "COMPRA" ] || [ "$tipo" == "VENTA" ]; then


fecha=$(date +"%d-%m-%y")
echo -e "\n\e[1;36m ▶▶ Ingrese descripción.\e[0m"
echo -e "\e[33m \c"
read descripcion
echo -e "$idcontrato:$cliente:$apellidoCliente:$padron:$fecha:$tipo:$descripcion"
>> "Contratos/$idcontrato.txt"
sleep 1.5
echo -e "\n\e[34m ▶▶ Datos guardados correctamente.\e[0m"
sleep 2
fechaIReingresar=0
precioReingresar=0
garantiaReingresar=0
repetir=0
clear

elif [ "$tipo" == "ALQUILER" ]; then


fechaIReingresar=-1

while [ $fechaIReingresar != 0 ]; do
echo -e "\n\e[1;36m ▶▶ Ingrese fecha de inicio con el formato "dd-mm-aa", tal y
como se muestra."
echo -e "\e[33m \c"
read fechaI

if [[ $fechaI =~ ^[0-3][0-9]-[0-1][0-9]-[0-9]{2}$ ]]; then


echo -e "\e[1;35m ▶▶ Fecha ingresada correctamente.\e[0m"
echo -e "\n"
sleep 2
fechaIReingresar=0
precioReingresar=0
garantiaReingresar=0
repetir=0
else
echo -e "\e[1;35m ▶▶ La fecha es inválida. Ingrese la fecha con el formato
"dd-mm-aa".\e[0m"
sleep 2
echo -e "\n"
tput cuu 5
tput ed
sleep 1
fi
done

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 49


fechaFReingresar=-1

while [ $fechaFReingresar != 0 ]; do
echo -e "\e[1;36m ▶▶ Ingrese fecha final con el formato "dd-mm-aa", tal y como
se muestra."
echo -e "\e[33m \c"
read fechaF

if [[ $fechaF =~ ^[0-3][0-9]-[0-1][0-9]-[0-9]{2}$ ]]; then


echo -e "\e[1;35m ▶▶ Fecha ingresada correctamente.\e[0m"
echo -e "\n"
sleep 2

fechaIReingresar=0
precioReingresar=0
garantiaReingresar=0
repetir=0
clear

echo -e "\e[1;36m ▶▶ Ingrese duración del contrato en meses."


echo -e "\e[33m \c"
read duracion
echo -e "\n"

else
echo -e "\e[1;35m ▶▶ La fecha es inválida. Ingrese la fecha con el formato
"dd-mm-aa".\e[0m"
sleep 2
echo -e "\n"
tput cuu 5
tput ed
sleep 1
fi
done
else
echo -e "\e[1;35m ▶▶ COMPRA/VENTA/ALQUILER mal escrito, intente
nuevamente.\e[0m"
sleep 2
echo -e "\n"
tput cuu 5
tput ed
sleep 1
fi
done

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 50


precioReingresar=-1

while [ $precioReingresar != 0 ]; do
echo -e "\e[1;36m ▶▶ Ingrese precio por mes del alquiler."
echo -e "\e[33m \c"
read precio

if [[ $precio =~ ^[0-9]+$ ]]; then


echo -e "\e[1;35m ▶▶ Has ingresado el precio correctamente.\e[0m"
echo -e "\n"
sleep 2
precioReingresar=0
garantiaReingresar=0
repetir=0
else
echo -e "\e[1;35m ▶▶ El precio es incorrecto. Ingrese solo números.\e[0m"
sleep 2
echo -e "\n"
tput cuu 5
tput ed
sleep 1
fi
done

garantiaReingresar=-1

while [ $garantiaReingresar != 0 ]; do
echo -e "\e[1;36m ▶▶ Ingrese tipo de garantía "ANDA/CONTADURIA/DEPOSITO",
tal y como se muestra."
echo -e "\e[33m \c"
read garantia

if [ "$garantia" == "ANDA" ] || [ "$garantia" == "CONTADURIA" ] || [ "$garantia" ==


"DEPOSITO" ]; then
echo -e "\n"
echo -e "\e[1;36m ▶▶ Ingrese descripción del contrato."
echo -e "\e[33m \c"
read descripcion
echo -e
"$idcontrato:$cliente:$apellidoCliente:$padron:$tipo:$cliente:$inmueble:$fechaI:$fechaF:$du
racion:$garantia:$descripcion:$precio" >> "Contratos/$idcontrato.txt"
echo -e "\n\e[35m ▶▶ Datos guardados correctamente.\e[0m"
sleep 2
fechaIReingresar=0
precioReingresar=0
garantiaReingresar=0
repetir=0

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 51


clear
else
echo -e "\e[1;35m ▶▶ ANDA/CONTADURIA/DEPOSITO mal escrito, intente
nuevamente.\e[0m"
sleep 2
echo -e "\n"
tput cuu 5
tput ed
sleep 1
fi
done
fi
done

4. DATOS DE PRUEBA:

Para acceder por primera vez al programa hemos dejado algunos datos de prueba:

● Login CEO:
○ Usuario: 53781328
○ Contraseña: 01091991
● Login GERENTE:
○ Usuario: 56603806
○ Contraseña: 20122006
● Login ADMIN:
○ Usuario: 53235874
○ Contraseña: 25062003

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 52


4. Descripción de cada carpeta de archivos de datos.

4.1. Carpeta ‘Login’

Esta carpeta contiene los tres archivos .txt donde guardamos los datos de logueo de
usuario y contraseña. En nuestro caso para mayor seguridad, hicimos un archivo txt para
cada sección con los nombres ‘datosLoginCEO’, ‘datosLoginGERENTE’ y
‘datosLoginADMIN’.

4.2. Carpeta ‘Clientes’

En esta carpeta colocamos los archivos con los datos de los clientes. El archivo.txt
tendrá como nombre la cédula del cliente.

4.3. ‘Carpeta Contratos’ y ‘ContratosOK’

La misma contiene los contratos en espera que se realizan al momento de crearlos.


A su vez, cuando se da de alta un contrato se crea una subcarpeta llamada “ContratosOK” a
los cuales son movidos los que se dan de alta.

4.4. ‘Carpeta Inmuebles’

Esta va a contener los archivos que se generan cuando registramos los inmuebles.
Los mismos tienen como nombre el Padrón del inmueble.

4.5. Log.txt
En este archivo se registran los usuarios que se han logueado.

4.6. ErrorFile.txt

En este archivo se envían los errores de los comandos para que no aparezcan en la
terminal cuando se ejecute el script.

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 53


Manual de Usuario
Inmobiliaria Costa Luz

⚠️ATENCIÓN⚠️
ESTE SCRIPT SOLO PUEDE SER UTILIZADO POR EL EMULADOR GIT PARA
TERMINALES DE LINUX. CUALQUIER OTRA TERMINAL PUEDE PRODUCIR ERROR
EN SU EJECUCIÓN.

LINK DE DESCARGA: Git - Downloads (git-scm.com)

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 54


● Login:

En esta sección usted tendrá que ingresar el nombre de usuario (cédula) y la


contraseña que le ha proporcionado el CEO anteriormente. Luego de ingresar los
respectivos datos podrá entrar a su menú correspondiente

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 55


● Menú CEO

Está compuesto por 7 opciones:


1. La primera habilita a crear nuevos usuarios ingresando su cédula como
nombre de usuario y colocando una contraseña a su elección.
2. La segunda permite modificar el precio de los inmuebles. La misma mostrará
todos los padrones que se encuentran cargados en el sistema de todos los
inmuebles. Luego deberá seleccionar cuál desea modificar y listo.
3. Permite el acceso a la sección de Gerencia para realizar los registros,
cambios, bajas, etc.
4. Permite el acceso a la sección Administrativa para realizar los ajustes
necesarios.
5. Muestra un listado de usuarios junto a la hora y fecha de acceso al programa
de quien ha ingresado al programa
6. Con esta opción, respaldamos todos los datos que se han ingresado al
sistema.
7. La opción 0 nos permite salir definitivamente del sistema.

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 56


● Menu Gerente

1. La primera opción es dar de alta u OK a los contratos en espera.


2. Eliminamos definitivamente los archivos de los clientes que seleccionemos.
3. Eliminamos los archivos relacionados con los inmuebles.
4. Accedemos al menú administrativo.
5. 0 es la opción por defecto para salir pero aparte de dejarnos escoger una opción,
también nos permite colocar la cédula para volver a nuestro menú principal.

● Menú Administrativo:

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 57


1. Al ingresar a este menú, la primer opción, accedemos a la ficha de clientes para
registrarlos
2. Al ingresar a este menú, la segunda opción, accedemos a la ficha de inmuebles para
registrarlos.
3. Si necesitamos modificar datos utilizamos esta opción, aunque ahora está en
construcción.
4. Consultamos el listado o los datos que necesitemos de los clientes o inmuebles.
5. Realizamos altas, bajas o modificaciones de los contratos.
6. Opción para salir.

● Inmuebles:

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 58


Es una ficha que se usa para registrar nuevos inmuebles. En la misma se tiene que
ingresar los datos que te pide cada campo de los inmuebles.
Cada ficha generada se guardará en un archivo distinto y en la carpeta de inmuebles.

● Clientes

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 59


Ficha para registrar nuevos clientes. En ella se tiene que ingresar los datos que te
pide siguiendo las instrucciones de cada campo. Cada cliente se guardará en un archivo
distinto y en la carpeta de clientes.

● Contratos

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 60


Ficha para registrar nuevos contratos. Cada contrato que se genera quedan
guardados en una carpeta donde se encuentran en espera. Cuando se dan de alta u Ok son
movidos automáticamente a una subcarpeta de Contratos OK.

INFORMÁTICA - ITS “Arias Balparda” - Sistemas Operativos II 61

También podría gustarte