Ejercicios de Automatización con Bash y PowerShell

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 6,84 KB

Scripts de Automatización en Bash para Linux

Ejercicio 1: Lectura de Cabeceras de Archivos

Este script utiliza un bucle for para recorrer los argumentos pasados y mostrar las primeras 3 líneas de cada archivo mediante el comando head.

#!/bin/bash

for archivo in "$@"
do
    head -n 3 "$archivo"
done

Ejercicio 2: Creación Masiva de Ficheros Vacíos

Script diseñado para crear una cantidad específica de ficheros de texto en un directorio determinado del escritorio utilizando el comando touch.

#!/bin/bash

mkdir -p ~/Escritorio/VACIOS

for ((i=1; i<=$1; i++))
do
    touch ~/Escritorio/VACIOS/fichero$i.txt
done

Ejercicio 3: Gestión de Usuarios con UID y Home Personalizado

Permite la creación de usuarios validando previamente si el UID o el directorio Home ya existen en el sistema para evitar conflictos.

#!/bin/bash

read -p "Usuario: " usuario
read -p "UID: " uid
read -p "Home: " home

if id -u "$uid" >/dev/null 2>&1
then
    echo "UID existente"
elif [ -d "$home" ]
then
    echo "Home existente"
else
    useradd -u "$uid" -d "$home" -m "$usuario"
fi

Ejercicio 4: Copia de Seguridad entre Carpetas

Verifica la existencia de dos directorios y procede a realizar una copia de archivos masiva de origen a destino.

#!/bin/bash

if [ -d "$1" ] && [ -d "$2" ]
then
    cp "$1"/* "$2"
else
    echo "Carpeta no válida"
fi

Ejercicio 5: Identificación de Login por UID

Busca en el archivo /etc/passwd el nombre de usuario asociado a uno o varios identificadores numéricos (UID).

#!/bin/bash

for uid in "$@"
do
    login=$(grep ":$uid:" /etc/passwd | cut -d: -f1)

    if [ -n "$login" ]
    then
        echo "$login"
    else
        echo "UID $uid no existe"
    fi
done

Ejercicio 6: Calculadora Aritmética Básica

Implementación de una calculadora que procesa operaciones de suma, resta, multiplicación y división mediante parámetros posicionales.

#!/bin/bash

if [ "$3" = "+" ]
then
    echo "$1 + $2 = $(($1+$2))"

elif [ "$3" = "-" ]
then
    echo "$1 - $2 = $(($1-$2))"

elif [ "$3" = "*" ]
then
    echo "$1 * $2 = $(($1*$2))"

elif [ "$3" = "/" ]
then
    echo "$1 / $2 = $(($1/$2))"

else
    echo "Operador incorrecto"
fi

Ejercicio 7: Cambio de Propietario de Ficheros

Script de administración para modificar el dueño de un archivo (comando chown) tras validar la existencia del fichero y del usuario.

#!/bin/bash

if [ ! -f "$1" ]
then
    echo "Fichero inexistente"

elif ! id "$2" >/dev/null 2>&1
then
    echo "Usuario inexistente"

else
    chown "$2" "$1"
fi

Ejercicio 8: Informe Estadístico de Directorios

Genera un resumen del contenido de una carpeta, contabilizando ficheros, enlaces simbólicos y subdirectorios.

#!/bin/bash

ficheros=$(find "$1" -maxdepth 1 -type f | wc -l)
enlaces=$(find "$1" -maxdepth 1 -type l | wc -l)
directorios=$(find "$1" -maxdepth 1 -type d | wc -l)

directorios=$((directorios-1))

echo "Ficheros: $ficheros"
echo "Enlaces: $enlaces"
echo "Directorios: $directorios"

Ejercicio 9: Información Detallada de Usuario

Extrae información completa del sistema (login, home, shell, grupos y sesiones activas) a partir de un UID.

#!/bin/bash

usuario=$(grep ":$1:" /etc/passwd)

if [ -z "$usuario" ]
then
    echo "UID no encontrado"
else
    login=$(echo "$usuario" | cut -d: -f1)
    nombre=$(echo "$usuario" | cut -d: -f5)
    home=$(echo "$usuario" | cut -d: -f6)
    shell=$(echo "$usuario" | cut -d: -f7)

    sesiones=$(who | grep "^$login " | wc -l)

    echo "Login: $login"
    echo "Nombre: $nombre"
    echo "Home: $home"
    echo "Shell: $shell"
    echo "Sesiones: $sesiones"
    groups "$login"
fi

Scripts de Administración en PowerShell para Windows

Ejercicio 1: Gestión de Cuentas Locales y Grupos

Uso de cmdlets para la creación de usuarios con contraseñas seguras y su asignación a grupos locales.

$pass = ConvertTo-SecureString "ISO.2021_a" -AsPlainText -Force

New-LocalUser -Name "Contable1" -FullName "Juan" -Password $pass
# Crear grupos
New-LocalGroup -Name "EconomicoFinanciero"
# Añadir usuarios a grupos
Add-LocalGroupMember -Group "EconomicoFinanciero" -Member "Contable1"

Ejercicio 2: Modificación de Descripción de Usuario

Actualización de metadatos de una cuenta de usuario local mediante Set-LocalUser.

Set-LocalUser -Name "Tecnico1" -Description "Contable Jefe"

Ejercicio 3: Configuración de Persistencia de Contraseña

Ajuste de seguridad para que la contraseña de un usuario no expire nunca.

Set-LocalUser -Name "JefeTI" -PasswordNeverExpires $true

Ejercicio 4: Forzar Cambio de Contraseña

Configuración de política de acceso para obligar al usuario a cambiar su contraseña en el próximo inicio de sesión.

net user Director /logonpasswordchg:yes

Ejercicio 5: Asignación de Privilegios Administrativos

Inclusión de un usuario técnico dentro del grupo de Administradores del sistema.

Add-LocalGroupMember -Group "Administradores" -Member "JefeTI"

Ejercicio 6: Menú Interactivo de Operaciones

Script con estructura do-while que presenta un menú para realizar sumas o encontrar el valor máximo entre tres números.

do {
    Write-Host "1. Sumar"
    Write-Host "2. Maximo"
    Write-Host "3. Salir"

    $opcion = Read-Host "Elige una opcion"

    if ($opcion -eq "1") {
        $n1 = [int](Read-Host "Numero 1")
        $n2 = [int](Read-Host "Numero 2")
        $n3 = [int](Read-Host "Numero 3")

        $suma = $n1 + $n2 + $n3

        Write-Host "Resultado: $suma"
    }

    if ($opcion -eq "2") {
        $n1 = [int](Read-Host "Numero 1")
        $n2 = [int](Read-Host "Numero 2")
        $n3 = [int](Read-Host "Numero 3")

        if ($n1 -gt $n2 -and $n1 -gt $n3) {
            Write-Host "El maximo es: $n1"
        }
        elseif ($n2 -gt $n1 -and $n2 -gt $n3) {
            Write-Host "El maximo es: $n2"
        }
        else {
            Write-Host "El maximo es: $n3"
        }
    }

    if ($opcion -eq "3") {
        Write-Host "Hasta luego"
    }

} while ($opcion -ne "3")

Entradas relacionadas: