Contenido del curso
Programación Shell Básica
Script Interactivos
Condicionales
Iteración
Archivos
Empaquetamiento
Funciones
Cierre del curso
Reto 7
Contenido del curso
Reto 7
Reto 7:
Modificar nuestro programa utiliyHost.sh para crear cinco funciones de acuerdo al menú creado anteriormente y completarlo con lo visto en clases.
Jordan Arellano Rosero
studentJuan Fidel
studentJuan Antonio Cuahonte Isla
studentMarcelo Roman
studentJared Jafet Mendizabal
studentArnoldo Alvarez
studentFrancisco Ignacio Regular Contreras
studentFredy Mendoza Vargas
studentSebastian avello
studentMarvin Javier Santos Fernández
studentJuan Camilo Lentino Villalba
studentJohn Alexander Ortiz Ramirez
studentFernando del Olmo
studentMario Alexander Vargas Celis
studentliliana.palacios
studenttcuk red
studentJose Luis Nunez Gonzalez
studentCristian Camilo Cortes Ortiz
studentHaward Rafael Tillero Jimenez
studentOscar Adolfo Vargas López
studentMariano Juarez
studentJorge Alejandro Uztariz Carbonell
studentecho"███████████████████████████" echo"███████▀▀▀░░░░░░░▀▀▀███████" echo"████▀░░░░░░░░░░░░░░░░░▀████" echo"███│░░░░░░░░░░░░░░░░░░░│███" echo"██▌│░░░░░░░░░░░░░░░░░░░│▐██" echo"██░└┐░░░░░░░░░░░░░░░░░┌┘░██" echo"██░░└┐░░░░░░░░░░░░░░░┌┘░░██" echo"██░░┌┘▄▄▄▄▄░░░░░▄▄▄▄▄└┐░░██" echo"██▌░│██████▌░░░▐██████│░▐██" echo"███░│▐███▀▀░░▄░░▀▀███▌│░███" echo"██▀─┘░░░░░░░▐█▌░░░░░░░└─▀██" echo"██▄░░░▄▄▄▓░░▀█▀░░▓▄▄▄░░░▄██" echo"████▄─┘██▌░░░░░░░▐██└─▄████" echo"█████░░▐█─┬┬┬┬┬┬┬─█▌░░█████" echo"████▌░░░▀┬┼┼┼┼┼┼┼┬▀░░░▐████" echo"█████▄░░░└┴┴┴┴┴┴┴┘░░░▄█████" echo"███████▄░░░░░░░░░░░▄███████" echo"██████████▄▄▄▄▄▄▄██████████" echo"███████████████████████████" echo".....LOADING.....LOADING......CARGANDO"
Donde se puede realizar esas imagenes?
RETO 7
# !/bin/bash # Reto 7 # Menu de opciones que imprime la opción seleccionada # Author: Juan Antonio Cuahonte Isla - 17/12/21 option=0 actual_processes(){ echo -e "\nProcesos Actuales:" ps -ef echo "\n" read -n 1 -s -r -p "Presiona ENTER para continuar..." } memory_available(){ echo -e "\nMemoria disponible actualmente" free -mth echo -e "\n" read -n 1 -s -r -p "Presiona ENTER para continuar..." } available_disk_space(){ echo -e "\n" df -h echo -e "\n" read -n 1 -s -r -p "Presiona ENTER para continuar..." } network_info(){ ifconfig -v | cowsay -W 100 read -n 1 -s -r -p "Presiona ENTER para continuar..." } configured_environment_variables(){ echo -e "\n" printenv | cowsay -W 100 echo -e "\n" read -n 1 -s -r -p "Presiona ENTER para continuar..." } program_info(){ echo -e "\nPrograma que te permite conocer información importante acerca de tu equipo\n" | cowsay -d read -n 1 -s -r -p "Presiona ENTER para continuar..." } backup_info(){ tar -cvf log.tar log.txt bzip2 -f log.tar zip -e log.zip log.tar.bz2 usuario="" host="" echo "A continuación ingresará los datos de envío" read -p "Ingresar el host: " host read -p "Ingresar el usuario: " usuario echo -e "\nEn éste momento se procederá a empaquetar la carpeta y transferirla según los datos ingrasados" rsync -avz $(pwd) $usuario@$host:/home/juan } while : do # Limpiar la pantalla clear # Desplegar el menú de opciones echo "--------------------------------------------" echo "PCUTIL - Programa de utilidad para tu equipo" echo "--------------------------------------------" echo " MENU PRINCIPAL " echo "--------------------------------------------" echo "1. Procesos Actuales" echo "2. Memoria Disponible" echo "3. Espacio en Disco" echo "4. Información de Red" echo "5. Variables de Entorno Configuradas" echo "6. Información del Programa" echo "7. Backup de información" echo "8. Salir" # Leer los datos del usuario read -n1 -p "Ingrese una opción [1-8]: " option # Validar la opción ingresada case $option in 1) echo -e "\nMostrar Procesos Actuales....." actual_processes ;; 2) echo -e "\nMostrar Memoria Disponible....." memory_available ;; 3) echo -e "\nMostrar Espacio en Disco....." available_disk_space ;; 4) echo -e "\nInformación de Red....." network_info ;; 5) echo -e "\nVariables de Entorno Configuradas....." configured_environment_variables ;; 6) echo -e "\nInformación del Programa....." program_info ;; 7) echo -e "\nRealizando Backup de información....." backup_info ;; 8) echo -e "\nSalir del Programa....." exit 0 ;; *) echo "Elige una opción válida" ;; esac done
#!/bin/bash #Programa que permite manejar las utilidades de Postgres #Autor= Marcelo Roman opcion=0 fechaActual=`date +%Y%m%d` #Funcion para instalar postgres instalar_postgres () { echo -e "\n Verificar instalacion postgres" verifyInstall=$(which psql) if [ $? -eq 0 ]; then echo -e "\n Postgres ya se encuentra instalado en el equipo" else read -s -p "Ingresar contrasenha root" password read -s -p "Ingresar contrasenha a utilizar en postgres" passwordPostgres echo "$password" | apt update echo "$password" | apt-get install postgresql postgresql-contrib sudo postgres psql -C "ALTER USER postgres WITH PASSWORD" '{$passwordPostgres}' echo "$password" | su systemctl enable postgresql.service echo "$password" | su systemctl start postgresql.service fi read -n 1 -s -r -p "PRESIONE [ENTER] para continuar..." } #Funcion para desinstalar postgres desinstalar_postgres () { read -n1 -p "Desea realmente desinstalar postgres [S/N]: " confirmar echo -e "\n" if [ $confirmar = 'S' ] || [ $confirmar = 's' ]; then echo -e "\nDesinstalar postgres..." read -s -p "Ingresar contrasenha root: " password echo -e "\n" echo "$password" | sudo systemctl stop postgresql.service echo "$password" | sudo apt-get -y --purge remove postgresq\* echo "$password" | sudo rm -rf /etc/postgresql echo "$password" | sudo rm -rf /var/lib/postgresql echo "$password" | sudo usedel -r postgres echo "$password" | sudo groupdel postgresql echo -e "\nDesinstalado postgres" elif [ $confirmar = 'N' ] || [ $confirmar = 'n' ]; then echo -e "\n" read -n 1 -s -r -p "PRESIONE [ENTER] para continuar..." else echo "opcion ingresada no valida" fi } #Funcion para sacar un respaldo sacar_respaldo () { echo "Listar las base de datos" sudo -u postgresql psql -c "\l" read -p "Elegir las base de datos a respaldar: " bddRespaldo echo -e "\n" if [ -d "$1" ]; then echo "Establecer permisos directorio" echo "$password" | sudo -S chmod 755 $1 echo "Realizando respaldo..." sudo -u postgres pg_dump -Fc $bddRespaldo > "$1/bddRespaldo$fechaActual.bak" echo "Respaldo realizado correctamente en la ubicacion:$1/bddRespaldo$fechaActual.bak" read -n 1 -s -r -p "PRESIONE [ENTER] para continuar..." else echo "El directorio $1 no existe" fi } #Funcion restaurar un respaldo restaurar_respaldo () { echo "Listar respaldos" read -p "Ingresar el directorio donde estan los respaldos: " directorioBackup ls -la $directorioBackup read -p "Elegir el resplado a restaurar" respaldoRestaurar echo -e "\n" read -p "Ingrese el nombre de la base de datos destino: " bddDestino #verificar si la bdd existe verifyBdd=$(sudo -u postgres psql -lqt | cut-d | -f 1 | grep -wq $bddDestino) if [ $? -eq 0 ]; then echo "Restaurando en la bdd destino: $bddDestino" else su -u postgres psql -c "create database $bddDestino" fi if [ -f "$1/$respaldoRestaurar" ]; then echo "Restaurando respaldo ..." sudo -u postgres pq_restore -Fc -d $bddDestino "$DirectorioBackup/$respaldoRestaurar" echo "Listar la base de datos" sudo -u postgres psql -c "\l" else echo "El respaldo $restaurarRespaldo no existe" fi read -n 1 -s -r -p "PRESIONE [ENTER] para continuar..." } while : do #Limpiar la pantalla clear #Desplegar el menu de opciones echo "#------------------------------------------#" echo "#PGUTIL - Programa de Utilidad de Postgres #" echo "#------------------------------------------#" echo "# Menu Principal #" echo "#------------------------------------------#" echo "# 1. Instalar Postgres #" echo "# 2. Desinstalar Postgres #" echo "# 3. Sacar un respaldos #" echo "# 4. Restaurar respaldo #" echo "# 5. Salir #" echo "#------------------------------------------#" #Leer los datos del usuario - capturar informacion read -n1 -p "Ingrese una opcion [1-5]:" opcion echo -e "\n" #Validad la opcion ingresada case $opcion in 1) instalar_postgres sleep 3 ;; 2) desinstalar_postgres sleep 3 ;; 3) sacar_respaldo sleep 3 ;; 4) restaurar_respaldo sleep 3 ;; 5) echo -e "\nSalir del programa" exit 0 ;; *) echo -e "\nOpcion no valida" sleep 1 ;; esac done```
Listo
! /bin/bash
Reto4
Autor: Jared Jafet Mendizabal
opcion=0
arrOps=("1- Procesos Actuales" "2- Memoria Disponible" "3- Espacio en Disco" "4- Informacion de Red" "5- Variables de Entorno" "6- Informacion del Programa" "7- Backup Informacion" "8- Salir")
#Muestra los Procesos Actuales procesosActuales(){ echo -e "\n${arrOps[0]}" ps axu sleep 3 }
#Muestra la Memoria Disponible memoriaDisponible(){ echo -e "\n${arrOps[1]}" free sleep 3 }
#Muestra el Espacio en Disco Restante espacioDisco(){ echo -e "\n${arrOps[2]}" df -h sleep 3 }
#Muestra la Informacion de Red infoRed(){ echo -e "\n${arrOps[3]}" ifconfig -a sleep 3 }
#Muestra las variables de entorno variablesEntorno(){ echo -e "\n${arrOps[4]}" env -u VAR sleep 3 }
#Muestra la informacion del programa infoPrograma(){ echo -e "\n${arrOps[5]}" dpkg -l | more sleep 3 }
#Realiza la transferencia de respaldos transferenciaBackup(){ fechaBack=$(date +"%F") nomBack=backupScripts$fechaBack.zip
echo -e "\n${arrOps[6]}" echo -e "\nArmando Respaldo..." zip -e $nomBack *.sh read -p "Ingrese la ip donde se guardara el respaldo: " iphost read -p "Ingrese el usuario del host donde se hara el respaldo: " user read -p "Ingrese la ruta donde se guardara el respaldo: " ruta rsync -avz $nomBack $user@$iphost:$ruta sleep 3
}
while : do #Limpiar la pantalla clear #Desplegar menu echo "-----------------------------------------" echo " MENU PRINCIPAL" echo "-----------------------------------------" for ((i=0;i<${#arrOps[*]};i++)) do echo "${arrOps[$i]}" done
#Leer los datos del usuario read -n1 -p "Ingrese una opcion: " opcion #Validar la opcion case $opcion in 1) procesosActuales ;; 2) memoriaDisponible ;; 3) espacioDisco ;; 4) infoRed ;; 5) variablesEntorno ;; 6) infoProframa ;; 7) transferenciaBackup ;; 8) echo -e "\n${arrOps[7]}" exit 0 ;; esac
done
He tomado el codigo del reto6.sh y le aplicado lo aprendido en cuanto a funciones.
# ! /bin/bash # Programa para cumplir con el reto#3 #Arnoldo Alvarez opcion="" numA=0 numB=0 numC=0 #telRegex= '^\(?([0-9]{3})\)?([0-9]{3})[.]?([0-9]{4})$' #Solo acepta el formato telefonico (xxx)xxx.xxxx Ej:(706)612.4602 telRegex2='^\([0-9]\{3\}\)\([0-9]\{3\}\)\([0-9]*\)/(\1) \2 . \3/$' pathArchivo="" aritmetica="" funcion="" phone="" respTel="" respBackup="" FILE=log.txt FILE2=Zip.zip DATE=`date +%y%m%d` TIME=`date +%H%M%S` coronavirus_guidelines() { echo -e "\nLo que debes hacer es lo siguiente: a) Lavarse las manos frecuentemente. b) Toser o estornudar al interior de tu codo. c) No tocarse la cara. d) Mantener cierta distancia social. e) Quedarse voluntariamente en casa." echo "$DATE-$TIME --- Guidelines de CoronaVirus consultadas" >> logs_reto7/$NEWFILE read -n 1 -s -r -p "Presione [ENTER] para continuar..." } Math_Function () { echo "Funciones Aritmeticas disponibles 1.- Sumar 2.- Multiplicar 3.- Dividir" echo -e "\n" read -p "Escoja la funcion Aritmetica: " aritmetica case $aritmetica in "1") funcion="suma" numC=$((numA + numB));; "2") funcion="Multiplicacion" numC=$((numA * numB));; "3") funcion="Division" numC=$((numA / numB));; *) funcion="Funcion No definida" echo "$DATE-$TIME --- Opcion No encontrada,Funcion Matematica NO realizada" >> logs_reto6/$NEWFILE echo "Opcion incorrecta";; esac echo "Resultado Matematico de la $funcion: $numC " echo "$DATE-$TIME --- Usuario realiza funcion matematica $funcion:$numC" >> logs_reto7/$NEWFILE read -n 1 -s -r -p "Presione [ENTER] para continuar..." } Phone_Format () { echo "$DATE-$TIME --- Usuario escoge chequear formato de numero telefonico" >> logs_reto7/$NEWFILE read -p "Ingrese numero telefonico: " telefono if [[ $telefono =~ $telRegex2 ]]; then echo "Formato correcto dentro de los EEUU" else phone=$telefono plainPhone=$(echo $phone | sed "s/[()-.]//g") echo "Formato Incorrecto dentro de los EEUU" read -n1 -p "Convertir al formato (123)456.7890 s/n: " respTel echo -e "\n" if [ $respTel = "s" ]; then formatedPhone2=$(echo $plainPhone | sed "s/\([0-9]\{3\}\)\([0-9]\{3\}\)\([0-9]*\)/(\1) \2 . \3/") echo "Numero convertido: $formatedPhone2 " echo "$DATE-$TIME --- Usuario cambia formato del Numero Telefonico $telefono" >> logs_reto7/$NEWFILE else echo "$DATE-$TIME --- Usuario responde NO para cambiar formato de $telefono" >> logs_reto7/$NEWFILE echo "Volviendo al Menu Principal..." fi fi read -n 1 -s -r -p "Presione [ENTER] para continuar..." } Directory_Search () { if [[ -d $dirPath ]]; then echo "$DATE-$TIME --- Usuario consulta satisfactoriamente el directorio $dirPath" >> logs_reto7/$NEWFILE echo "El directorio $dirPath SI Existe" else echo "El directorio NO Existe o NO es un directorio" echo "$DATE-$TIME --- Usuario No encuentra $dirPath" >> logs_reto7/$NEWFILE fi read -n 1 -s -r -p "Presione [ENTER] para continuar..." } File_Search () { if [[ -e $filePath ]]; then echo "$DATE-$TIME --- Usuario consulta el archivo $filePath" >> logs_reto7/$NEWFILE cat $filePath else echo "No se encuentra el archivo o Nombre de archivo Incorrecto" echo "$DATE-$TIME --- Usuario No encuentra $filePath" >> logs_reto7/$NEWFILE fi read -n 1 -s -r -p "Presione [ENTER] para continuar..." } Backup_Shit () { if [[ $respBackup = "s" ]]; then echo -e "\ncreando archivo tar..." sleep 2 tar -cvf logs_reto7/backup_`date +%Y%m%d`_`date +%H%M%S`.tar logs_reto7/ echo -e "\nCreando archivo ZIP..." echo "Debera introducir una Clave de Seguridad..." sleep 2 zip -e logs_reto7/zip_`date +%Y%m%d`_`date +%H%M%S`.zip /shellCourse/logs_reto7/*.tar echo "Transfieriendo archivo ZIP..." echo "Clave de Administrador para Transferencias" sleep 2 rsync -avz /shellCourse/logs_reto7/*.zip a2419@192.168.1.9:/$HOME/backup_logs_reto7/ echo "$DATE-$TIME --- Usuario ejecutando proceso de Respaldo" >> logs_reto7/$NEWFILE sleep 3 echo -e "\nBackup Realizado con Exito..." else echo "$DATE-$TIME --- Usuario cancela proceso de Respaldo " >> logs_reto7/$NEWFILE echo -e "\nSaliendo del modulo de Respaldos..." sleep 3 fi } #Se crea un archivo .log con fecha y hora y se mueve a un directorio de logs_reto5 NEWFILE=${FILE%.*}_`date +%Y%m%d`_`date +%H%M%S`.${FILE#*.} touch $NEWFILE mv $NEWFILE logs_reto6/ #echo "El archivo $NEWFILE fue creado con exito" while : do clear echo "archivo: $NEWFILE" echo "Las opciones son las siguientes\n 1.- Para Saber como evitar CoronaVirus 2.- Realizar funciones numericas 3.- Para verificar formato de numero telefonico 4.- Para verificar un directorio 5.- Ver contenido de un Archivo 6.- Hacer Respaldo de Logs 7.- salir" echo -e "\n" read -n1 -p "Introduzca su Opcion: " opcion case $opcion in "1") coronavirus_guidelines ;; "2") echo -e "\nIntroduzca el numero A: " read numA=$REPLY echo -e "Introduzca el numero B: " read numB=$REPLY Math_Function $numA $numB ;; "3") echo -e "\n" Phone_Format ;; "4") echo -e "\n" read -p "Ingrese la ruta de un directorio: " dirPath Directory_Search $dirPath ;; "5")echo -e "\n" read -p "Ingrese la ruta del archivo: " filePath File_Search $filePath ;; "6")echo -e "\n" read -n1 -p "Desea hacer Backup del Directorio logs_reto7 s/n: " respBackup Backup_Shit $respBackup ;; "7") echo -e "\n" echo -e "Saliendo..." echo "$DATE-$TIME --- Usuario sale de la aplicacion" >> logs_reto7/$NEWFILE exit 0 ;; *) echo "Opcion Incorrecta, Lo sentimos" esac done
reto 7
opcion=0 fechaActual=`date +%Y%m%d` #Función para instalar postgres instalar_postgres () { echo -e "\n Verificar instalación de postgres..." verifyInstall=$(which psql) if [ $? -eq 0 ]; then echo -e "\n Postgres ya se encuentra instalado" else read -s -p "Ingresar contraseña de sudo:" password read -s -p "Ingresar contraseña a utilizar en postgres:" passwordPostgres echo "$password" | sudo -S apt update echo "$password" | sudo -S apt-get -y install postgresql postgresql-contrib sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '{$PASSWORDpOSTGRES}';" echo "$password"| sudo -S systemctl enable postgresql.service echo "$password"| sudo -S systemctl start postgresql.service fi read -n1 -s -r -p "PRESIONE [ENTER] para continuar..." } desinstalar_postgres () { echo "Desintalar postgres" echo -e "\n" read -s -p "Ingresar contraseña de sudo:" password echo "$password"| sudo -S systemctl stop postgresql.service echo "$password"| sudo -S apt-get -y --purge remove postgresql\* echo "$password"| sudo -S rm -f /etc/postgresql echo "$password"| sudo -S rm -f /etc/postgresql-common echo "$password"| sudo -S rm -f /var/lib/postgresql echo "$password"| sudo -S userdel -r postgres echo "$password"| sudo -S groupdel postgresql read -n1 -s -r -p "PRESIONE [ENTER] para continuar..." } sacar_respaldo () { echo "Listar las bases de datos" sudo -u postgres psql -c "\l" read -p "Elegir la base de datos a respaldar:" bddRespaldo echo -e "\n" if [ -d "$1" ]; then echo "Establecer permisos al directorio" echo "$password"| sudo -S chmod 755 $1 echo "Realizando respaldo ... " sudo -u postgres pg_dump -Fc $bddRespaldo > "$1/bddRespaldo$fechaActual.bak" echo "Respaldo realizado correctamente en la ubicación: $1/bddRespaldo$fechaActual.bak" else echo "El directorio $1 no existe" fi read -n1 -s -r -p "PRESIONE [ENTER] para continuar..." } restaurar_respaldo () { echo "Listar respaldos" ls -1 $1/*.bak read -p "Elegir el respaldo a restaurar" respaldoRestaurar echo -e "\n" read -p "Ingrese el nombre de la base de datos destino:" bddDestino # Verificar si la bdd existe verifyBdd=$(sudo -u postgres psql -lqt |cut -d \| -f 1 | grep -wq $bddDestino) if [ $? -eq 0 ];then echo "Restaurando en la dbb destino: $bddDestino" else sudo -u postgres psql -c "create database $bddDestino" fi if [ -f "$1/$respaldoRestaurar" ]; then echo "Restaurando respaldo..." sudo -u postgres pg_restore -Fc -d $bddDestino "$1/$respaldorestaurar" echo "Listar la base de datos" sudo -u postgres psql -c "\l" else echo "El respaldo $respaldoRestaurar no existe" fi read -n1 -s -r -p "PRESIONE [ENTER] para continuar..." } memoria () { echo -e "\nMemoria del servidor" free -m } uso_cpu () { echo -n "\nestadisticas de uso de cpu" vmstat 1 2 } uso_disco () { echo -e "\nuso disco" df -h } procesos_memoria () { echo -e "\nlos procesos en memoria" ps -fea } usuarios_locales () { echo -e "\nusuario locales" cat /etc/passwd } while : do #Limpiar pantalla clear #desplegar menu de opciones echo "_________________________________________" echo "PGUTIL - Programa de utilidad de Postgres" echo "_________________________________________" echo " MENU PRINCIPAL " echo "_________________________________________" echo "1. Instalar Postgres" echo "2. Desintalar Postgres" echo "3. Sacar un respaldo" echo "4. Restar respaldo" echo "5. ver memoria" echo "6. Uso CPU" echo "7. Disco" echo "8. Procesos memoria" echo "9. Usuarios locales" echo "10. Salir" #Leer los datos de usuario read -n2 -p "Ingrese una opción [1-10]:" opcion #validar la opción ingresada case $opcion in 1) instalar_postgres sleep 3 ;; 2) desinstalar_postgres sleep 3 ;; 3) read -p "Directorio Backup" directorioBackup sacar_respaldo $directorioBackup sleep 3 ;; 4) read -p "Directorio de Respaldo:" directorioRespaldos restaurar_respaldo $directorioRespaldos sleep 3 ;; 5) memoria sleep 3 ;; 6) uso_cpu sleep 3 ;; 7) uso_disco sleep 3 ;; 8) procesos_memoria sleep 3 ;; 9) usuarios_locales sleep 3 ;; 10) echo -e "\nSalir del programa" exit 0 ;; esac done
Excelente.
bueno
#!/bin/bash showSystemInfo (){ uname -a } showDiskUsage(){ df -h } showFreeRam (){ free -h } showProcesses (){ ps -aux } makeBackup (){ read -p "Ruta de directorio: " target tar -czvf backup_$(date +%F_%H-%M-%S).tar.gz $target } while true; do echo "===== Utility host menu ========" echo "1. Informacion de sistema" echo "2. Uso de disco" echo "3. Memoria ram libre" echo "4. Procesos activos" echo "5. Crear backup" echo "6. Salir" read -p "Selecciona una opcion: " op case $op in 1) showSystemInfo;; 2) showDiskUsage;; 3) showFreeRam;; 4) showProcesses;; 5) makeBackup;; 6) echo "Saliendo del programa.." exit 0;; *) echo "Opcion invalida";; esac echo "" done
Este es mi codigo final
mainDir="Logs" option=0 mkdir $mainDir > /dev/null currentProcesses(){ echo -e "\n Current Processes " >> $nameFile ps aux | grep $(whoami) >> $nameFile cat $nameFile } availableMemory(){ echo -e "\n Available Memory " >> $nameFile awk '/MemAvailable/ {printf "%.4fGB\n", $2/(1024*1024)}' /proc/meminfo>> $nameFile cat $nameFile } diskSpace(){ echo -e "\n Disk Space " >> $nameFile df -h | awk 'NR==1 || /^\/dev/' >> $nameFile cat $nameFile } redInformation(){ echo -e "\n Red Information ">> $nameFile ip addr show>> $nameFile cat $nameFile } enviromentVariables(){ echo -e "\n Configured Environment Variables ">> $nameFile env | sort>> $nameFile cat $nameFile } progamInformation(){ echo -e "\n Program information ">> $nameFile echo "V0.0.3">> $nameFile cat $nameFile } backup(){ echo -e "\n Backup information " nameBackup="./$mainDir/Backup_$dateStr.tar" numberFiles=$(find ./$mainDir -regex ".*log" | wc -l) files=$(find ./$mainDir -regex ".*log") if [ $numberFiles -gt 0 ]; then if tar -cf $nameBackup $files; then if pbzip2 -f $nameBackup; then rm $files echo "Backup Completed $nameBackup.bz2" else echo "Error to use pbzip2" fi else echo "Program could not packing files" fi else echo "There is not files to save" fi } goodbye(){ echo -e "\nGoodBye" exit 0 } incorrect(){ echo -e "\nValue is not correct" echo -e "\n Backup information " } while : do clear echo "______________________________" echo " STATUS SYSTEM " echo "______________________________" echo " MAIN MENU " echo "1. Current Processes" echo "2. Available Memory" echo "3. Disk Space" echo "4. Red Information" echo "5. Configured Environment Variables" echo "6. Program information" echo "7. Backup information" echo "8. Exit" read -n1 -p "Insert a option:" option dateStr=$(date "+%Y_%m_%d_%H_%M_%S") nameFile="./$mainDir/Log_$dateStr.log" case $option in 1) currentProcesses ;; 2) availableMemory ;; 3) diskSpace ;; 4) redInformation ;; 5) enviromentVariables ;; 6) progamInformation ;; 7) backup ;; 8) goodbye ;; *) incorrect ;; esac read -n1 -r -p "Press any key to continue..." done
Aquí el mio. Por la joda le quise añadir un toque de humor, para dejar ya el tema zanjado con el Bash :)
# ! /bin/bash
# Programa que permite manejar las utilidades de Postres
# Autor: Marco Toscano Freire - @martosfre
opcion=0
fechaActual=`date +%Y%m%d`
# Función para instalar postgres
instalar_postgres () {
echo -e "\n Verificar instalación postgres ...."
verifyInstall=$(which psql)
if [ $? -eq 0 ]; then
echo -e "\n Postgres ya se encuentra instalado en el equipo"
else
echo -e "\n"
read -s -p "Ingresar contraseña de sudo:" password
read -s -p "Ingresar contraseña a utilizar en postgres:" passwordPostgres
echo "$password" | sudo -S apt update
echo "$password" | sudo -S apt-get -y install postgresql postgresql-contrib
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '{$PASSWORDpOSTGRES}';"
echo "$password" | sudo -S systemctl enable postgresql.service
echo "$password" | sudo -S systemctl start postgresql.service
fi
read -n 1 -s -r -p "PRESIONE [ENTER] para continuar..."
}
# Función para desinstalar postgres
desinstalar_postgres () {
echo -e "\n"
read -s -p "Ingresar contraseña de sudo:" password
echo -e "\n"
echo "$password" | sudo -S systemctl stop postgresql.service
echo "$password" | sudo -S apt-get -y --purge remove postgresql\*
echo "$password" | sudo -S rm -r /etc/postgresql
echo "$password" | sudo -S rm -r /etc/postgresql-common
echo "$password" | sudo -S rm -r /var/lib/postgresql
echo "$password" | sudo -S userdel -r postgres
echo "$password" | sudo -S groupdel postgresql
read -n 1 -s -r -p "PRESIONE [ENTER] para continuar..."
}
# Función para sacar un respaldo
sacar_respaldo () {
echo "Listar las bases de datos"
sudo -u postgres psql -c "\l"
read -p "Elegir la base de datos a respaldar:" bddRespaldo
echo -e "\n"
if [ -d "$1" ]; then
echo "Establecer permisos directorio"
echo "$password" | sudo -S chmod 755 $1
echo "Realizando respaldo..."
sudo -u postgres pg_dump -Fc $bddRespaldo > "$1/bddRespaldo$fechaActual.bak"
echo "Respaldo realizado correctamente en la ubicación:$1/bddRespaldo$fechaActual.bak"
else
echo "El directorio $1 no existe"
fi
read -n 1 -s -r -p "PRESIONE [ENTER] para continuar..."
}
# Función para restaurar un respaldo
restaurar_respaldo () {
echo "Listar respaldos"
ls -1 $1/*.bak
read -p "Elegir el respaldo a restaurar:" respaldoRestaurar
echo -e "\n"
read -p "Ingrese el nombre de la base de datos destino:" bddDestino
#Verificar si la bdd existe
verifyBdd=$(sudo -u postgres psql -lqt | cut -d \| -f 1 | grep -wq $bddDestino)
if [ $? -eq 0 ]; then
echo "Restaurando en la bdd destino: $bddDestino"
else
sudo -u postgres psql -c "create database $bddDestino"
fi
if [ -f "$1/$respaldoRestaurar" ]; then
echo "Restaurando respaldo..."
sudo -u postgres pg_restore -Fc -d $bddDestino "$1/$respaldoRestaurar"
echo "Listar la base de datos"
sudo -u postgres psql -c "\l"
else
echo "El respaldo $respaldoRestaurar no existe"
fi
read -n 1 -s -r -p "PRESIONE [ENTER] para continuar..."
}
#Chistes de Yayo
chiste () {
echo -e "\n Va, venga un chistecito"
echo -e "\n La señora que entra a la verdulería"
echo -e "\n +¡Señor almacenero!, ¿a cúanto tiene los huevos?"
cowsay "A 3 cm del culo, señora"
}
while :
do
#Limpiar la pantalla
clear
#Desplegar el menú de opciones
echo "_________________________________________"
echo "PGUTIL - Programa de Utilidad de Postgres"
echo "_________________________________________"
echo " MENÚ PRINCIPAL "
echo "_________________________________________"
echo "1. Instalar Postgres"
echo "2. Desinstalar Postgres"
echo "3. Sacar un respaldo"
echo "4. Restar respaldo"
echo "5. Vamos a cambiar de tema, por favor"
echo "6. Salir"
#Leer los datos del usuario - capturar información
read -n1 -p "Ingrese una opción [1-6]:" opcion
#Validar la opción ingresada
case $opcion in
1)
instalar_postgres
sleep 3
;;
2)
desinstalar_postgres
sleep 3
;;
3)
echo -e "\n"
read -p "Directorio Backup:" directorioBackup
sacar_respaldo $directorioBackup
sleep 3
;;
4)
echo -e "\n"
read -p "Directorio de Respaldos:" directorioRespaldos
restaurar_respaldo $directorioRespaldos
sleep 3
;;
5)
chiste
sleep 9
;;
6)
echo -e "\n Salir del Programa"
exit 0
;;
esac
done
# ! /bin/bash # Programa que permite manejar las utilidades de # Autor: Mario Celis - https://www.linkedin.com/in/mario-alexander-vargas-celis/ opcion=0 fechaActual=`date +%Y%m%d` # Funcion Instalar postgres instalar_postgres () { echo -e "\n Verificar instalación postgres ...." verifyInstall=$(which psql) if [ $? -eq 0 ]; then echo -e "\n Postgres ya se encuentra instalado en el equipo" else read -s -p "Ingresar contraseña de sudo:" password read -s -p "Ingresar contraseña a utilizar en postgres:" passwordPostgres echo "$password" | sudo -S apt update echo "$password" | sudo -S apt-get -y install postgresql postgresql-contrib sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '{$PASSWORDpOSTGRES}';" echo "$password" | sudo -S systemctl enable postgresql.service echo "$password" | sudo -S systemctl start postgresql.service fi read -n 1 -s -r -p "PRESIONE [ENTER] para continuar..." } # Función para desinstalar postgres desinstalar_postgres () { read -s -p "Ingresar contraseña de sudo:" password echo -e "\n" echo "$password" | sudo -S systemctl stop postgresql.service echo "$password" | sudo -S apt-get -y --purge remove postgresql\* echo "$password" | sudo -S rm -r /etc/postgresql echo "$password" | sudo -S rm -r /etc/postgresql-common echo "$password" | sudo -S rm -r /var/lib/postgresql echo "$password" | sudo -S userdel -r postgres echo "$password" | sudo -S groupdel postgresql read -n 1 -s -r -p "PRESIONE [ENTER] para continuar..." } # Función para sacar el respaldo sacar_respaldo () { echo "Listar las bases de datos" sudo -u postgres psql -c "\l" read -p "Elegir la base de datos a respaldar:" bddRespaldo echo -e "\n" if [ -d "$1" ]; then echo "Establecer permisos directorio" echo "$password" | sudo -S chmod 755 $1 echo "Realizando respaldo..." sudo -u postgres pg_dump -Fc $bddRespaldo > "$1/bddRespaldo$fechaActual.bak" echo "Respaldo realizado correctamente en la ubicación:$1/bddRespaldo$fechaActual.bak" else echo "El directorio $1 no existe" fi read -n 1 -s -r -p "PRESIONE [ENTER] para continuar..." } # Fnción para restaurar respaldo restaurar_respaldo () { echo "Listar respaldos" ls -1 $1/*.bak read -p "Elegir el respaldo a restaurar:" respaldoRestaurar echo -e "\n" read -p "Ingrese el nombre de la base de datos destino:" bddDestino #Verificar si la bdd existe verifyBdd=$(sudo -u postgres psql -lqt | cut -d \| -f 1 | grep -wq $bddDestino) if [ $? -eq 0 ]; then echo "Restaurando en la bdd destino: $bddDestino" else sudo -u postgres psql -c "create database $bddDestino" fi if [ -f "$1/$respaldoRestaurar" ]; then echo "Restaurando respaldo..." sudo -u postgres pg_restore -Fc -d $bddDestino "$1/$respaldoRestaurar" echo "Listar la base de datos" sudo -u postgres psql -c "\l" else echo "El respaldo $respaldoRestaurar no existe" fi read -n 1 -s -r -p "PRESIONE [ENTER] para continuar..." } while : do #Limpiar la pantalla clear #Desplegar el menú de opciones echo "_________________________________________" echo "PGUTIL - Programa de Utilidad de Postgres" echo "_________________________________________" echo " MENÚ PRINCIPAL " echo "_________________________________________" echo "1. Instalar Postgres" echo "2. Desinstalar Postgres" echo "3. Sacar un respaldo" echo "4. Restar respaldo" echo "5. Salir" # Leer los datos del usuario - Capturar información read -n1 -p "Ingrese una función [1-5]: " opcion #Validar la opción ingresada case $opcion in 1) instalar_postgres sleep 5 ;; 2) desinstalar_postgres sleep 6 ;; 3) read -p "Directorio Backup: " directorioBackup sacar_respaldo $directorioBackup sleep 3 ;; 4) read -p "Directorio de Respaldos: " directorioRespaldos restaurar_respaldo $directorioRespaldos sleep 2 ;; 5) echo -e "\nSalir del Programa" exit 0 ;; esac done ```# ! /bin/bash# Programa que permite manejar las utilidades de # Autor: Mario Celis - opcion=0fechaActual=`date +%Y%m%d` \# Funcion Instalar postgresinstalar\_postgres () { echo -e "\n Verificar instalación postgres ...." verifyInstall=$(which psql) if \[ $? -eq 0 ]; then echo -e "\n Postgres ya se encuentra instalado en el equipo" else read -s -p "Ingresar contraseña de sudo:" password read -s -p "Ingresar contraseña a utilizar en postgres:" passwordPostgres echo "$password" | sudo -S apt update echo "$password" | sudo -S apt-get -y install postgresql postgresql-contrib sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '{$PASSWORDpOSTGRES}';" echo "$password" | sudo -S systemctl enable postgresql.service echo "$password" | sudo -S systemctl start postgresql.service fi read -n 1 -s -r -p "PRESIONE \[ENTER] para continuar..."} \# Función para desinstalar postgresdesinstalar\_postgres () { read -s -p "Ingresar contraseña de sudo:" password echo -e "\n" echo "$password" | sudo -S systemctl stop postgresql.service echo "$password" | sudo -S apt-get -y --purge remove postgresql\\\* echo "$password" | sudo -S rm -r /etc/postgresql echo "$password" | sudo -S rm -r /etc/postgresql-common echo "$password" | sudo -S rm -r /var/lib/postgresql echo "$password" | sudo -S userdel -r postgres echo "$password" | sudo -S groupdel postgresql read -n 1 -s -r -p "PRESIONE \[ENTER] para continuar..."} \# Función para sacar el respaldosacar\_respaldo () { echo "Listar las bases de datos" sudo -u postgres psql -c "\l" read -p "Elegir la base de datos a respaldar:" bddRespaldo echo -e "\n" if \[ -d "$1" ]; then echo "Establecer permisos directorio" echo "$password" | sudo -S chmod 755 $1 echo "Realizando respaldo..." sudo -u postgres pg\_dump -Fc $bddRespaldo > "$1/bddRespaldo$fechaActual.bak" echo "Respaldo realizado correctamente en la ubicación:$1/bddRespaldo$fechaActual.bak" else echo "El directorio $1 no existe" fi read -n 1 -s -r -p "PRESIONE \[ENTER] para continuar..."} \# Fnción para restaurar respaldorestaurar\_respaldo () { echo "Listar respaldos" ls -1 $1/\*.bak read -p "Elegir el respaldo a restaurar:" respaldoRestaurar echo -e "\n" read -p "Ingrese el nombre de la base de datos destino:" bddDestino #Verificar si la bdd existe verifyBdd=$(sudo -u postgres psql -lqt | cut -d \\| -f 1 | grep -wq $bddDestino) if \[ $? -eq 0 ]; then echo "Restaurando en la bdd destino: $bddDestino" else sudo -u postgres psql -c "create database $bddDestino" fi if \[ -f "$1/$respaldoRestaurar" ]; then echo "Restaurando respaldo..." sudo -u postgres pg\_restore -Fc -d $bddDestino "$1/$respaldoRestaurar" echo "Listar la base de datos" sudo -u postgres psql -c "\l" else echo "El respaldo $respaldoRestaurar no existe" fi read -n 1 -s -r -p "PRESIONE \[ENTER] para continuar..."} while : do #Limpiar la pantalla clear #Desplegar el menú de opciones echo "\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_" echo "PGUTIL - Programa de Utilidad de Postgres" echo "\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_" echo " MENÚ PRINCIPAL " echo "\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_" echo "1. Instalar Postgres" echo "2. Desinstalar Postgres" echo "3. Sacar un respaldo" echo "4. Restar respaldo" echo "5. Salir" # Leer los datos del usuario - Capturar información read -n1 -p "Ingrese una función \[1-5]: " opcion #Validar la opción ingresada case $opcion in 1) instalar\_postgres sleep 5 ;; 2) desinstalar\_postgres sleep 6 ;; 3) read -p "Directorio Backup: " directorioBackup sacar\_respaldo $directorioBackup sleep 3 ;; 4) read -p "Directorio de Respaldos: " directorioRespaldos restaurar\_respaldo $directorioRespaldos sleep 2 ;; 5) echo -e "\nSalir del Programa" exit 0 ;; esacdone
! /bin/bash
Programa para cumplir el reto 7
Autor: Liliana Palacios
opcion=0
fechaActual=date +%Y%m%d
instalar_postgres () {
echo -e "\n Verificar instalación postgres"
verifyInstall=$(which psql)
if [ $? -eq 0 ]; then
echo -e "\n Postgres Ya cuenta con Postgres instalado en su equipo"
else
echo -e "\n"
read -s -p "Ingresar contraseña de sudo:" pass
read -s -p "Ingresar contraseña a utilizar en postgres:" passwordPostgres
echo "$pass" | sudo -S apt update
echo "$pass" | sudo -S apt-get -y install postgresql postgresql-contrib
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '{$PASSWORDpOSTGRES}';"
echo "$pass" | sudo -S systemctl enable postgresql.service
echo "$pass" | sudo -S systemctl start postgresql.service
fi
read -n 1 -s -r -p "PRESIONE [ENTER] para continuar..."
}
desinstalar_postgres () { echo -e "\n" read -s -p "Ingresar contraseña de sudo:" pass echo -e "\n" echo "$pass" | sudo -S systemctl stop postgresql.service echo "$pass" | sudo -S apt-get -y --purge remove postgresql* echo "$pass" | sudo -S rm -r /etc/postgresql echo "$pass" | sudo -S rm -r /etc/postgresql-common echo "$pass" | sudo -S rm -r /var/lib/postgresql echo "$pass" | sudo -S userdel -r postgres echo "$pass" | sudo -S groupdel postgresql read -n 1 -s -r -p "PRESIONE [ENTER] para continuar..." }
sacar_backup () { echo "Listar bases de datos" sudo -u postgres psql -c "\l" read -p "Elegir la base de datos a respaldar:" bddBackup echo -e "\n" if [ -d "$1" ]; then echo "Establecer permisos directorio" echo "$password" | sudo -S chmod 755 $1 echo "Realizando respaldo..." sudo -u postgres pg_dump -Fc $bddBackup > "$1/bddBackup$fechaActual.bak" echo "Respaldo realizado correctamente en la ubicación:$1/bddBackup$fechaActual.bak" else echo "El directorio $1 no existe" fi read -n 1 -s -r -p "PRESIONE [ENTER] para continuar..." }
restaurar_respaldo () { echo "Listar respaldos" ls -1 $1/*.bak read -p "Elegir el respaldo a restaurar:" RestaurarBackup echo -e "\n" read -p "Ingrese el nombre de la base de datos destino:" bddDestino #Verificar si la bdd existe verifyBdd=$(sudo -u postgres psql -lqt | cut -d | -f 1 | grep -wq $bddDestino) if [ $? -eq 0 ]; then echo "Restaurando en la bdd destino: $bddDestino" else sudo -u postgres psql -c "create database $bddDestino" fi
if [ -f "$1/$RestaurarBackup" ]; then echo "Restaurando respaldo..." sudo -u postgres pg_restore -Fc -d $bddDestino "$1/$RestaurarBackup" echo "Listar la base de datos" sudo -u postgres psql -c "\l" else echo "El respaldo $RestaurarBackup no existe" fi read -n 1 -s -r -p "PRESIONE [ENTER] para continuar..."
}
while : do
clear #Desplegar el menú de opciones echo "_________________________________________" echo " MENÚ PRINCIPAL " echo "_________________________________________" echo "1. Instalar Postgres" echo "2. Desinstalar Postgres" echo "3. Sacar un respaldo" echo "4. Restar respaldo" echo "5. Salir" read -n1 -p "Ingrese una opción [1-5]:" opcion #Validar la opción ingresada case $opcion in 1) instalar_postgres sleep 3 ;; 2) desinstalar_postgres sleep 3 ;; 3) echo -e "\n" read -p "Ingrese el directorio a sacar Backup:" directorioBackup sacar_backup $directorioBackup sleep 3 ;; 4) echo -e "\n" read -p "Ingrese el directorio a sacar Respaldo:" directorioRespaldos restaurar_respaldo $directorioRespaldos sleep 3 ;; 5) echo "Salir del Programa" exit 0 ;; esac
done
#!/bin/bash user=“debian" server=“192.168.0.1" path=”/home/ubuntu" date=date +%Y%m%d%H%M%S opcion=”" log=“log-$date.log”
funcionps(){ echo "mostrando procesos del sistema" ps aux > ps-$log && cat $PWD/*$log }
funcionmem(){ echo "mostrando memoria libre del sistema" free > mem-$log && cat $PWD/*$log }
funciondisk(){ echo "mostrando disco del sistema" df -h > disk-$log && cat $PWD/*$log }
funcionnet(){ echo "mostrando redes del sistema" ip a > net-$log && cat $PWD/*$log }
funcionenv(){ echo "mostrando enviroments del sistema" env > env-$log && cat $PWD/*$log }
funcionwhere(){ echo "mostrando informacion de un programa del sistema" read -p "Indique un program: " pg echo "" whereis $pg > pg-$log && cat $PWD/$log } funcionbk(){ echo "realizando backup de logs" zip -e backup-$date.zip $PWD/.log > back-$log && cat $PWD/*$log }
funcionscp(){ scp backup-$date.zip $user@$server:$path }
echo "1)Procesos Actuales" echo "2)Memoria Disponible" echo "3)Espacio en Disco" echo "4)Información de Red" echo "5)Variables de Entorno Configuradas" echo "6)Información Programa" echo “7)Backup información”
read -n1 -p “Ingrese una opción:” opcion echo “”
case $opcion in
# !/bin/bash # Reto numero 4, crear menu de opciones # Autor Jose Luis Nunez opcion=0 # Se crearon todas las funciones requeridad para cada uno de las verificaciones del Menu procesosActuales(){ ps -ef } memoria(){ free -m } espacioDisk(){ df -h } infoRed(){ ifconfig } varEntorno(){ printenv } while : do clear echo "====================================" echo " BIENVENIDO AL MENU DE OPCIONES " echo "====================================" echo " ESCOJA UNA DE LAS OPCIONES [1-8] " echo "====================================" echo "1. PROCESOS ACTUALES" echo "2. MEMORIA DISPONIBLE" echo "3. ESPACIO EN DISCO" echo "4. INFORMACION DE RED" echo "5. VARIABLES DE ENTORNO CONFIGURADAS" echo "6. SALIR" # Solicitar la informacion read -n1 -p "Por favor ingrese una opcion: " opcion # Case para accion para cada opcion case $opcion in 1) echo -e "\nA continuacion se presentan los Procesos Actuales: " procesosActuales sleep 5;; 2) echo -e "\nA continuacion se presentan la Memoria Disponible: " memoria sleep 5;; 3) echo -e "\nA continuacion se presenta el Espacio en Disco: " espacioDisk sleep 5;; 4) echo -e "\nA continuacion se presenta la Informacion de Red: " infoRed sleep 5;; 5) echo -e "\nA continuacion se presentan las Variables de Entorno: " varEntorno sleep 5;; 6) echo -e "\nHasta Luego" sleep 3 break;; *) echo -e "\nOpcion incorrecta" sleep 3;; esac done
Código:
#!/bin/bash # Create a menu with the following options: # 1. Current proccesses. # 2. Available memory. # 3. Disk space. # 4. Network information. # 5. Enviromment variables set. # 6. Program information. # 7. Backup information. # 8. Exit. # After this we will retrieve the option entered, validate it and print the option and the titile according to what was entered. # Modify the program to pack the generated logs usign some compression format, put a key in it and pass it to another machine through SSH, when selecting option 7. # Modify the program to create five functions according to the previously created menu and complete it with what has been seen in class. choose=0 # Fuction to show the current proccesses current_proccesses () { echo -e "\n" echo "********************************************************" echo "This is the current proccesses:" echo "*********************** WAIT ***************************" sleep 1 ps ax echo "*********************** DONE ***************************" echo -e "\n" } # Function to show the available memory available_memory () { echo -e "\n" echo "********************************************************" echo "This is the available memory:" echo "*********************** WAIT ***************************" sleep 1 free echo "*********************** DONE ***************************" echo -e "\n" } # Function to show the disk space disk_space () { echo -e "\n" echo "********************************************************" echo "This is the disk space:" echo "*********************** WAIT ***************************" sleep 1 df -h echo "*********************** DONE ***************************" echo -e "\n" } # Function to show network information network_information () { echo -e "\n" echo "********************************************************" echo "This is the network information:" echo "*********************** WAIT ***************************" sleep 1 ifconfig echo "*********************** DONE ***************************" echo -e "\n" } # Function to show the enviromment variables set enviromment_variables () { echo -e "\n" echo "********************************************************" echo "This is the enviromment variables set:" echo "*********************** WAIT ***************************" sleep 1 env echo "*********************** DONE ***************************" echo -e "\n" } # Function to show the program information program_information () { echo -e "\n" echo "********************************************************" echo "This is the program information:" echo "*********************** WAIT ***************************" sleep 1 dpkg -l echo "*********************** DONE ***************************" echo -e "\n" } # Function to do a information backup and send with SSH backup_SSH () { host= user= ipRegEx='^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' echo -e "\n" echo "********************************************************" echo "This is the backup information:" echo "********************************************************" sleep 1 echo "****************** SET PASSWORD ************************" zip -e backup.zip *.sh echo ">./backup.zip" echo "******************** BACKUP DONE ***********************" read -p "Please enter a host IP destination: " host while [[ ! $host =~ $ipRegEx ]]; do echo "***************** INCORRECT VALUE **********************" read -p "Please enter a host IP destination: " host done read -p "Please enter a user name destination: " user while [[ -z $user ]]; do echo "***************** INCORRECT VALUE **********************" read -p "Please enter a user name destination: " user done echo "*********************** WAIT ***************************" rsync -avhz ./backup.zip $user@$host:~/Downloads echo "********************************************************" echo "The file: backup.zip was sent to $user@$host:~/Downloads" echo "******************** FILE SENT *************************" echo -e "\n" } # Exit function exit_function () { echo -e "\n" echo "********************************************************" echo "*********************** WAIT ***************************" echo "Quitting..." sleep 1 echo "*********************** DONE ***************************" exit 0 } while : do echo "********************************************************" echo "************************* SCRIPT ***********************" echo "********************************************************" echo "****************** ADMINISTRATION TOOLS ****************" echo "* 1) Current proccesses *" echo "* 2) Available memory *" echo "* 3) Disk space *" echo "* 4) Network information *" echo "* 5) Enviroment variables set *" echo "* 6) Program information *" echo "* 7) Backup information and send with SSH *" echo "* 8) Exit *" echo "********************************************************" read -p "Please enter a number from (1 - 8): " choose while [[ $choose -lt 1 ]] || [[ $choose -gt 8 ]]; do echo "***************** INCORRECT VALUE **********************" read -p "Please enter a number from (1 - 8): " choose done echo "********************************************************" case $choose in "1") current_proccesses ;; "2") available_memory ;; "3") disk_space ;; "4") network_information ;; "5") enviromment_variables ;; "6") program_information ;; "7") backup_SSH ;; "8") exit_function esac done echo "********************** SCRIPT ENDED ********************"
Mi Reto 7
# !/bin/bash # Programa que permite manejar las utilidades de Postgres # Autor: Haward Tillero - htillero@gmail.com #Variables opcion=0 fechaActual=`date +%Y%m%d` hostRegex='^alpha|beta|gamma$' #<---------Funciones---------> #Instalar Postgres instalar_Postgres () { clear echo "Verificando instalación de Postgres..." verifyInstall=$(which psql) if [ $? -eq 0 ]; then echo -e "\nPostgres ya se encuentra instalado en el equipo" else #Cuando se piden datos con read y se quiere usal salto de linea se usa $ y comillas simples read -s -p $'\nIngresar contraseña de sudo: ' pwdSudo read -s -p $'\nIngresar contraseña a ultilizar en Postgres: ' pwdPsql #Ejecutar comandos echo "$pwdSudo" | sudo -S apt update echo "$pwdSudo" | sudo -S apt-get -y install postgresql postgresql-contrib #Cambio de clave del usuario en Postgres sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '{$pwdPsql}';" #Habilitar e iniciar servicio Postgres echo "$pwdSudo" | sudo -S systemctl enable postgresql.service echo "$pwdSudo" | sudo -S systemctl star postgresql.service fi #Solicitar que presionen una tecla para continuar read -n1 -s -r -p $'\nPresione [ENTER] para continuar' } #Desinstalar Postgres desinstalar_Postgres () { clear echo "Iniciando proceso para Desinstalar Postgres..." read -s -p $'\nIngresar contraseña de sudo: ' pwdSudo echo -e "\n" echo "$pwdSudo" | sudo -S systemctl stop postgresql.service #Puede requerir este comando pero debe saber que versión tiene instalado #echo "$pwdSudo" | sudo -S pg_dropcluster --stop 14 main echo "$pwdSudo" | sudo -S apt-get -y --purge remove postgresql\* echo "$pwdSudo" | sudo -S rm -r /etc/postgresql echo "$pwdSudo" | sudo -S rm -r /etc/postgresql-common echo "$pwdSudo" | sudo -S rm -r /var/lib/postgresql echo "$pwdSudo" | sudo -S userdel -r postgres echo "$pwdSudo" | sudo -S groupdel postgresql read -n1 -s -r -p $'\nPresione [ENTER] para continuar' } #Hacer Backups sacar_Backup () { clear echo "Listar las BDD" sudo -u postgres psql -c "\l" read -p $'\nElegir la base de datos a respaldar: ' bddBackup echo -e "\n" if [ -d "$1" ]; then echo "Establecer permisos al directorio" echo "$pwdSudo" | sudo -S chmod 755 $1 echo -e "\nRealizando Backup..." sudo -u postgres pg_dump -Fc $bddBackup > "$1/bddBackup$fechaActual.bak" echo -e "\nBackup realizado Correctamente!" else echo "El directorio $1 no existe..." echo -e "\n" read -n1 -p "Desea crear el directorio $1? (s/n)" respuestaDir if [ respuestaDir = "s" ]; then sudo mkdir $1 echo "$pwdSudo" | sudo -S chmod 755 $1 echo -e "\nRealizando Backup..." sudo -u postgres pg_dump -Fc $bddBackup > "$1/bddBackup$fechaActual.bak" echo -e "\nBackup realizado Correctamente!" else echo -e "\nSaliendo sin realizar Backup..." fi fi read -n1 -s -r -p $'\nPresione [ENTER] para continuar' } #Restaurar Backups restaurar_Backup () { echo "Listar Backups" ls -1 $1/*.bak read -p "Elegir el Backup a Restaurar: " backupRestore read -p $'\nIngrese el nombre de la BDD destino: ' bddDestino #Verificar si la BDD existe! verifyBdd=$(sudo -u postgres psql -lqt | cut -d \| -f 1 | grep -wq $bddDestino) if [ $? -eq 0 ]; then echo "Restaurando en la BDD destino: $bddDestino" else sudo -u postgres psql -c "create database $bddDestino" fi #Verificar si el respaldo que se va restaurar existe if [ -f "$1/$backupRestore" ]; then echo "Restaurando Backup..." sudo -u postgres pg_restore -Fc -d $bddDestino "$1/$backupRestore" echo -e "\nListar la BDD" sudo -u postgres psql -c "\l" else echo -e "\nEl Backup $backupRestore no existe!" fi read -n1 -s -r -p $'\nPresione [ENTER] para continuar' } #Procesos Actuales procesos_Actuales () { echo "Procesos Actuales..." ps aux sleep 3 } #Memoria Disponible memoria_Disponible () { echo "Memoria Disponible..." free -h | sort sleep 3 } #Espacio Disponible espacio_Disponible () { echo "Espacio en Disco..." df -lh | sort sleep 3 } #Información de la Red info_Red () { echo "Información de Red..." ifconfig -a sleep 3 } #Transferir Backup a server transferir_Backup () { i=0 #Validando Host while [[ $i -eq 0 ]]; do read -p "Ingrese el Host: [alpha, beta, gamma]: " host if [[ $host =~ $hostRegex ]]; then ((i++)) else echo "El Host $host es inválido..." fi done read -p $'\nIngresar el usuario: ' usuario read -p "Indique el Directorio de Backups: " directorioBackup echo -e "\nEnviando Backup..." rsync -avzP $(pwd) $usuario@$host:/home/backups $directorioBackup sleep 3 } #Menu while : do #Limpiar la pantalla clear #Desplegar el menú de opciones echo "_________________________________________" echo " MENÚ PRINCIPAL " echo "_________________________________________" echo "0. Instalar Postgres" echo "1. Desinstalar Postgres" echo "2. Procesos Actuales" echo "3. Memoria Disponible" echo "4. Espacio Disponible" echo "5. Información de la Red" echo "6. Hacer un Backup" echo "7. Transferir Backup a un Host" echo "8. Restaurar un Backup" echo "9. Salir" #Leer los datos del usuario - capturar información read -n1 -p "Ingrese una opción [0-9]: " opcion echo -e "\n" #Validar la opción ingresada case $opcion in 0) instalar_Postgres ;; 1) desinstalar_Postgres ;; 2) procesos_Actuales ;; 3) memoria_Disponible ;; 4) espacio_Disponible ;; 5) info_Red ;; 6) read -p "Indique el Directorio de Backups: " directorioBackup sacar_Backup $directorioBackup ;; 7) transferir_Backup ;; 8) read -p "Ingrese el Directorio donde se encuentran los Backups: " directorioRestaurar restaurar_Backup $directorioRestaurar ;; 9) echo -e "\n\nSalir del Programa..." exit 0 ;; esac done
<# ! /bin/bash # programa paea ejemplificar funciones con argumentos # autor: Oscar Vargas IG :EcoGeekco backupDir="$(pwd)/reto7" option="" datelog="`date +%Y%m%d%H%M`.log " mkdir $backupDir #Funcion para instalar postgres instalar_postgres () { echo -e "\n Verificar instalación postgres" verifyInstall=$(which psql) if [ $? -eq 0 ]; then echo -e "\n Postgres se encuentra instalado en el equipo" else read -s -p " ingresar contraseña de sudo:" psswd read -s -p " ingresar contraseña para postgres " pwpg echo "$psswd" | sudo -S apt update echo "$psswd" | sudo -S apt-get -y install postgresql postgresql-contrib sudo -u postgres psql -c "Alter user postgres with password '{$pwpg }';" echo "$psswd" | sudo -S systemctl enable postgresql.service echo "$psswd" | sudo -S systemctl start postgresql.service fi read -n 1 -s -r -p "Presione [ENTER] para continuar..." } #Funcion para desinstalar postgres desinstalar_postgres () { read -s -p "Ingresar contraseña de sudo:" $psswd echo -e "\n" echo "$psswd" | sudo -S systemctl stop postgresql.service echo "$psswd" | sudo -S apt-get -y --purge remove postgresql\* echo "$psswd" | sudo -S rm -r /etc/postgresql echo "$psswd" | sudo -S rm -r /etc/postgresql-common echo "$psswd" | sudo -S rm -r /var/lib/postgresql echo "$psswd" | sudo -S userdel -r postgres echo "$psswd" | sudo -S groupel postgresql read -n 1 -s -r -p "Presione [ENTER] para continuar..." } #Funcion para mirar procesos actuales procesos_actuales () { ps aux ps aux >> $backupDir/$option_$datelog ls $backupDir *.log } #Funcion para mirar procesos actuales memoria_disponible () { free -h free -h >> $backupDir/$option_$datelog ls $backupDir *.log } #Funcion para mirar procesos actuales disco_disponible () { df -h df -h >> $backupDir/$option_$datelog ls $backupDir *.log } #Funcion para mirar procesos actuales procesos_red () { netstat -tulpn netstat -tulpn >> $backupDir/$option_$datelog ls $backupDir *.log } #Funcion para mirar procesos actuales empaquetar_salvar () { date=$(date '+%Y%m%d%H%M%S') touch $date.log cat *.sh >> $backupDir/$option_$datelog sleep 1 cat /var/log/syslog >> $backupDir/$option_$datelog sleep 1 cat /etc/passwd >> $backupDir/$option_$datelog sleep 1 cd $backupDir tar -cvf respaldo.tar *.log gzip respaldo.tar zip -e respaldo *.tar.gz host="" usuario="" read -p "ingresarel usuario del servidor a transferir el backup" usuario read -p "ingresar ip del servidor a respaldar el host" host echo -e "\nEn este momento empezaremos transferir los archivos al servidor de respaldo" rsync -avz respaldo.zip $usuario@$host:/home/oscar cd .. echo "done" } while : do # Limpiar pantalla clear #Desplegar menu de opciones echo "___________________________________________" echo "PG UTIL - Programa de utilidad de SysOps " echo "___________________________________________" echo " MENU PRINCIPAL " echo "___________________________________________" echo "1. Procesos Actuales " echo "2. Memoria disponible " echo "3. Espacio en Disco" echo "4. Informacion Red " echo "5. Instalar Postgresql" echo "6. Desinstalar Postgresql " echo "7. Backup de todos los logs anteriores" echo "8. Salir" # leer los datos del usuario read -n1 -p "Ingrese una opción [1-5]" opcion # validar la opcion de ingresada case $opcion in 1) echo -e "\n Procesos Actuales." procesos_actuales sleep 5 ;; 2) echo -e "\n Memoria Disponible." memoria_disponible sleep 5 ;; 3) echo -e "\n Espacio en disco....." disco_disponible sleep 5 ;; 4) echo -e "\n Informacion Red....." procesos_red sleep 5 ;; 5) echo -e "\n Variables de entorno configuradas....." instalar_postgres sleep 5 ;; 6) echo -e "\n Informacion Programa" desinstalar_postgres sleep 5 ;; 7) echo -e "\n Comprimir archivos" empaquetar_salvar sleep 5 ;; 8) echo -e "\n Saliendo Muchas Gracias " exit 0 ;; esac done >
<code> #!/bin/bash #Crear un menu con las siguientes opciones: # 1.Procesos actuales # 2.Memorias Disponible # 3.Espacio de Disco # 4.Informacion de Red # 5.Variables de entorno congirudadas # 6.Informacion del Programa # 7.Backup informacion # 8.Ingrese una Opcion opcion=0 tem="" fecha=$(date +%Y%m%d) mostrarproc(){ echo -e "\nMostrar Procesos" ps -au ps -au >> temp } memo(){ echo -e "\nMemoria Disponible" free -h free -h >> temp } espacio(){ echo -e "\nEspacio en disco" dfc -T dfc -T >> temp } infored(){ echo -e "\nInformacion de red" ip a ip a >> temp } vaentorno(){ echo -e "\nVariables de Entorno" printenv printenv >> temp } infosoft(){ echo -e "\n Version 1.0 de utilidades basicas Copyright ChichoCoria" } backuplog(){ echo -e "\nBackup Informacion....." echo -e "\Creando Archivo.log" sudo mv temp log$fecha.log echo -e "\Comprimir archivos .log con clave" sudo zip -e backuplog.zip *.log } salir(){ echo -e "\nSalir del programa" exit 0 } while : do clear echo "-----------------------------" echo "Programa de utilidades EVA1.0" echo "-----------------------------" echo " MENU PRINCIPAL " echo "-----------------------------" echo "1.Procesos actuales" echo "2.Memorias Disponible" echo "3.Espacio de Disco" echo "4.Informacion de Red" echo "5.Variables de entorno congirudadas" echo "6.Informacion del Programa" echo "7.Backup informacion" echo "8.Salir" read -n1 -p "Ingrese una Opcion [1-8]:" opcion case $opcion in 1) mostrarproc sleep 5 ;; 2) memo sleep 5 ;; 3) espacio sleep 5 ;; 4) infored sleep 5 ;; 5) vaentorno sleep 5 ;; 6) infosoft sleep 5 ;; 7) backuplog sleep 5 ;; 8) salir ;; esac done
#!/bin/bash
user="ubuntu"
server="192.168.0.1"
path="/home/ubuntu"
date=date +%Y%m%d%H%M%S
opcion=""
log="log-$date.log"
funcionps(){ echo "mostrando procesos del sistema" ps aux > ps-$log && cat $PWD/*$log }
funcionmem(){ echo "mostrando memoria libre del sistema" free > mem-$log && cat $PWD/*$log }
funciondisk(){ echo "mostrando disco del sistema" df -h > disk-$log && cat $PWD/*$log }
funcionnet(){ echo "mostrando redes del sistema" ip a > net-$log && cat $PWD/*$log }
funcionenv(){ echo "mostrando enviroments del sistema" env > env-$log && cat $PWD/*$log }
funcionwhere(){ echo "mostrando informacion de un programa del sistema" read -p "Indique un programa: " pg echo "" whereis $pg > pg-$log && cat $PWD/$log } funcionbk(){ echo "realizando backup de logs" zip -e backup-$date.zip $PWD/.log > back-$log && cat $PWD/*$log }
funcionscp(){ scp backup-$date.zip $user@$server:$path }
echo "1)Procesos Actuales" echo "2)Memoria Disponible" echo "3)Espacio en Disco" echo "4)Información de Red" echo "5)Variables de Entorno Configuradas" echo "6)Información Programa" echo "7)Backup información"
read -n1 -p "Ingrese una opción:" opcion echo ""
case $opcion in 1) funcionps ;; 2) funcionmem ;; 3) funciondisk ;; 4) funcionnet ;; 5) funcionenv ;; 6) funcionwhere ;; 7) funcionbk funcionscp ;; *) echo "opcion no valida" ;; esac