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"
doneEjercicio 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
doneEjercicio 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"
fiEjercicio 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"
fiEjercicio 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
doneEjercicio 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"
fiEjercicio 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"
fiEjercicio 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"
fiScripts 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 $trueEjercicio 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:yesEjercicio 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")