Ejemplos Prácticos de Scripts en Bash, PowerShell y CMD para Administradores
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 8,59 KB
Scripts de Bash para Linux/macOS
mostrar_lineas.sh
Este script verifica que se ha pasado un fichero como parámetro, comprueba que existe y es legible, y finalmente muestra sus primeras 10 líneas.
#!/bin/bash
# Verifica que se ha pasado un parámetro
if [ $# -eq 0 ]; then
echo "Uso: $0 <fichero>"
exit 1
fi
FICHERO="$1"
# Verifica que el fichero existe y es legible
if [ ! -f "$FICHERO" ]; then
echo "Error: El fichero '$FICHERO' no existe o no es un archivo regular."
exit 2
fi
if [ ! -r "$FICHERO" ]; then
echo "Error: El fichero '$FICHERO' no se puede leer."
exit 3
fi
# Muestra las primeras 10 líneas del fichero
echo "Mostrando las primeras 10 líneas de '$FICHERO':"
head -n 10 "$FICHERO"crear_vacios.sh
Crea una carpeta llamada "vacios" (si no existe) y genera ficheros vacíos dentro de ella con los nombres pasados como argumentos al script.
#!/bin/bash
# Verifica si se han pasado al menos un nombre de fichero
if [ $# -eq 0 ]; then
echo "Uso: $0 <fichero1> [fichero2 ...]"
exit 1
fi
# Nombre de la carpeta
CARPETA="vacios"
# Crea la carpeta si no existe
if [ ! -d "$CARPETA" ]; then
mkdir "$CARPETA"
echo "Carpeta '$CARPETA' creada."
fi
# Crea ficheros vacíos dentro de la carpeta
for nombre in "$@"; do
touch "$CARPETA/$nombre"
echo "Fichero vacío '$CARPETA/$nombre' creado."
donecalculadora.sh
Una calculadora simple que pide dos números y un operador (+, -, *, /), valida las entradas y muestra el resultado.
#!/bin/bash
# Pedir primer número
read -p "Introduce el primer número: " num1
# Pedir operando
read -p "Introduce el operador (+, -, *, /): " operador
# Pedir segundo número
read -p "Introduce el segundo número: " num2
# Validar que los números son válidos (números reales o enteros)
if ! [[ "$num1" =~ ^-?[0-9]+(\.[0-9]+)?$ && "$num2" =~ ^-?[0-9]+(\.[0-9]+)?$ ]]; then
echo "Error: debes introducir números válidos."
exit 1
fi
# Validar operador
if [[ "$operador" != "+" && "$operador" != "-" && "$operador" != "*" && "$operador" != "/" ]]; then
echo "Error: operador no válido. Usa +, -, * o /"
exit 2
fi
# Evitar división por cero
if [[ "$operador" == "/" && "$num2" == "0" ]]; then
echo "Error: división por cero no permitida."
exit 3
fi
# Realizar la operación con 'bc'
resultado=$(echo "scale=2; $num1 $operador $num2" | bc)
# Mostrar resultado en el formato deseado
echo "$num1$operador$num2=$resultado"mostrar_uid_usuario.sh
Este script muestra el UID del usuario actual y luego solicita el nombre de otro usuario para mostrar su UID y nombre completo si existe.
#!/bin/bash
# Mostrar UID del usuario actual
echo "Tu UID es: $UID"
# Pedir nombre de usuario
read -p "Introduce un nombre de usuario: " usuario
# Comprobar si el usuario existe en el sistema
if id "$usuario" &>/dev/null; then
uid_usuario=$(id -u "$usuario")
nombre_completo=$(getent passwd "$usuario" | cut -d ':' -f 5 | cut -d ',' -f 1)
echo "Información del usuario '$usuario':"
echo "UID: $uid_usuario"
echo "Nombre completo: $nombre_completo"
else
echo "El usuario '$usuario' no existe."
ficopiar_directorio.sh
Copia todo el contenido de un directorio de origen a un directorio de destino. Verifica que los parámetros sean correctos y crea la carpeta de destino si no existe.
#!/bin/bash
# Verifica que se han pasado dos parámetros
if [ $# -ne 2 ]; then
echo "Uso: $0 <ruta_origen> <ruta_destino>"
exit 1
fi
RUTA_ORIGEN="$1"
RUTA_DESTINO="$2"
# Verifica que la ruta origen existe y es un directorio
if [ ! -d "$RUTA_ORIGEN" ]; then
echo "Error: '$RUTA_ORIGEN' no es un directorio válido."
exit 2
fi
# Crea la ruta destino si no existe
if [ ! -d "$RUTA_DESTINO" ]; then
mkdir -p "$RUTA_DESTINO"
echo "Carpeta destino '$RUTA_DESTINO' creada."
fi
# Copia los archivos
cp -r "$RUTA_ORIGEN/"* "$RUTA_DESTINO/"
echo "Contenido de '$RUTA_ORIGEN' copiado a '$RUTA_DESTINO'."Scripts de PowerShell para Windows
Menú de Gestión de Usuarios y Grupos
Un script interactivo que presenta un menú para crear usuarios locales o grupos locales en Windows, solicitando la información necesaria en cada caso.
Clear-Host
$valor = 0
while ($valor -ne 3)
{
# Creamos el menú de opciones
Write-Host "1.- Crear usuario local"
Write-Host "2.- Crear grupo local"
Write-Host "3.- Salir"
$valor = Read-Host "Elige una opción"
# Creamos el usuario y solicita el nombre del mismo
if ($valor -eq 1)
{
$usuario = Read-Host "Dime el nombre de usuario que desea añadir"
$contraseña = Read-Host -AsSecureString "Introduzca la contraseña"
New-LocalUser -Name $usuario -Password $contraseña
Write-Host "El usuario local se ha creado de forma correcta"
}
# Creamos los grupos locales y solicita el nombre del mismo
elseif ($valor -eq 2)
{
$grupo = Read-Host "Introduce el nombre del grupo a crear"
New-LocalGroup -Name $grupo
Write-Host "El grupo local se ha creado de forma correcta"
}
# Sale y muestra el mensaje adiós
elseif ($valor -eq 3)
{
Write-Host "Adiós"
}
else
{
Write-Host "Error: algo ha fallado"
}
}Ejercicios de Administración de Usuarios y Grupos
Ejercicio 1: Creación de Usuarios y Grupos
$pass1 = Read-Host -AsSecureString
New-LocalUser -Name Tecnico1 -FullName Fran -Password $pass1
New-LocalUser -Name Tecnico2 -FullName Irene -Password $pass1
New-LocalUser -Name JefeTI -FullName Francisco -Password $pass1
New-LocalUser -Name Director -FullName María -Password $pass1
New-LocalGroup -Name TI
Add-LocalGroupMember -Group TI -Member Tecnico1
Add-LocalGroupMember -Group TI -Member Tecnico2
Add-LocalGroupMember -Group TI -Member JefeTI
New-LocalGroup -Name Dirección
Add-LocalGroupMember -Group Dirección -Member DirectorEjercicio 2: Modificar Descripción de Usuario
Set-LocalUser -name Tecnico1 -Description "Contable Jefe"Ejercicio 3: Configurar Expiración de Cuenta
Set-LocalUser -name JefeTI -AccountNeverExpiresEjercicios de Gestión de Ficheros y Directorios (Bloque B)
Ejercicio 6: Creación de Directorios
New-Item -Path c:\ -Name Examen1PS -ItemType Directory
New-Item -Path C:\Examen1PS\ -Name ISO -ItemType Directory
New-Item -Path C:\Examen1PS\ -Name FH -ItemType Directory
New-Item -Path C:\Examen1PS\ -Name PAR -ItemType Directory
New-Item -Path C:\Examen1PS\ -Name LM -ItemType DirectoryEjercicio 7: Creación de Fichero con Contenido
New-Item -Path C:\Examen1PS\ISO\ -Name alumnos.txt -ItemType File -Value "Hoy voy a aprobar el examen de ISO"Ejercicio 8: Copiar Fichero
Copy-Item -Path .\alumnos.txt -Destination ..\FH\ -RecurseEjercicio 9: Mover Directorio y Renombrar Fichero
Move-Item -Path C:\Examen1PS\PAR\ -Destination c:\Examen1PS\FH\
Rename-Item -Path C:\Examen1PS\FH\alumnos.txt -NewName notas.txtEjercicio 10: Copiar Directorio Recursivamente
Copy-Item -Path C:\Examen1PS\ISO\ -Destination C:\Examen1PS\PAR\ASO -RecurseEjercicio 11: Mostrar Contenido de Fichero
Get-Content -Path C:\Examen1PS\ISO\alumnos.txtEjercicio 12: Eliminar Directorio
Remove-Item -Path C:\Examen1PS\LM\ -RecurseComandos de Símbolo del Sistema (CMD) para Windows
Ejercicios de Gestión de Ficheros y Directorios
Ejercicio 13: Creación de Directorios con mkdir
mkdir Examen1CMD
mkdir Examen1CMD\ISO
mkdir Examen1CMD\FH
mkdir Examen1CMD\PAR
mkdir Examen1CMD\LMEjercicio 14: Crear Fichero con Contenido
echo "Hoy voy a aprobar el examen de ISO" >> C:\Examen1CMD\ISO\alumnos.txtEjercicio 15: Copiar Fichero
copy alumnos.txt ..\FHEjercicio 16: Mover y Renombrar
move PAR FH
move FH\alumnos.txt FH\notas.txtEjercicio 17: Copiar Árbol de Directorios
xcopy /e C:\Examen1CMD\ISO C:\Examen1CMD\PAR\ASO
REM (Galán: xcopy copia archivos y árboles de directorio, y con /E copia todo, incluso directorios vacíos)Ejercicio 18: Mostrar Contenido de Fichero
type ISO\alumnos.txtEjercicio 19: Eliminar Directorio y su Contenido
rmdir /s LM