Herramientas de usuario

Herramientas del sitio


informatica:sistemas_operativos:cursos:linux_para_devops_y_sysadmin:scripting

Scripting

Sección perteneciente al curso Linux para DevOps y Sysadmin.

Mi primer script

#!/bin/bash
 
# Esto es un comentario
 
echo "Mi directorio actual es:"
 
pwd
 
echo "El usuario que está conectado en esta terminal es: "
 
whoami

Hay que darle permisos de ejecución:

chmod +x miscript.sh

Luego podemos ejecutarlo:

./miscript.sh

Alternativa:

sh miscript.sh

Variables en scripts

Ejemplo usando variables de usuario:

#!/bin/bash
 
# Este es el script de clase
 
alumno=Pepito
 
nota=9
 
# Mostramos la información por pantalla
echo "El alumno $alumno ha sacado un $nota"
 
nota=10
 
echo "El alumno $alumno ha sacado un $nota en el segundo intento"

Variables de entorno en scripts

Si queremos ver las variables de entorno creadas:

printenv

También se puede usar el comando env

Para ver las variables que han sido exportadas:

export

Crearemos un script donde crearemos una variable de entorno y la usaremos:

#!/bin/bash
 
# Si algún comando falla, no continuará el script:
set -e
 
DOCKER_USER=pepito
 
export DOCKER_USER
 
# Login en Docker con nuestra cuenta
docker login --username $DOCKER_USER 

Condicional if

Veremos el uso del condicional escribiendo un script que compruebe si existe un directorio:

#!/bin/bash
 
set -e
 
directorio="/home/pepito"
 
if [ -d $directorio ]; then
  echo "Este directorio existe"
else
  echo "Este directorio no existe"
fi  

Bucle for

Mostraremos los números del 1 al 10 cada segundo:

#!/bin/bash
 
for ((c=1; c<=10; c++))
do
  echo "Contador $c"
  sleep 1
done

Crear diez ficheros vacíos:

#!/bin/bash
 
for ((c=1; c<=10; c++))
do
  echo "touch-$c"
done

Bucle while

#!/bin/bash
 
numero=1
 
# Mientras el valor de número sea menor o igual que 5
while [ $numero -le 5 ]
do
  echo "Ejecutándose $número de veces"
  (( numero++ ))
done

Algunos operadores que podemos usar en la condición:

  • -gt: mayor
  • -lt: menor
  • -ge: mayor o igual
  • -le: menor o igual
  • -eq: igual
  • -ne: distinto

Case condition - Control de flujo

#!/bin/bash
 
# Control de flujo
 
echo "Adivina mi edad"
 
read edad
 
case $edad in
  28)
    echo "Correcto. Has adivinado"
  ;;
  *)
    echo "Lo siento. No has adivinado."
  ;;
esac

Script que cree un usuario con su ssh key

Mediante un script, crearemos un usuario, le daremos una contraseña, lo añadiremos al grupo sudo y crearemos un par de claves SSH. Al script le pasaremos como argumento el nombre del usuario que queremos crear.

#!/bin/bash
 
# Crear usuario
sudo useradd -m -s /bin/bash $1
sudo usermod -aG sudo $1
 
# Ponemos contraseña para ese usuario
sudo passwd $1
 
# Generar claves SSH (identificándonos como el nuevo usuario)
sudo su - $1 -c "ssh-keygen -t rsa"
 
# Salimos de la shell del usuario
exit

Script que instale el paquete que le digas

El siguiente script comprobará si cierto paquete está instalado. En caso de no estarlo, lo instalará:

#!/bin/bash
 
read -p "Introduce el nombre del paquete: " paquete
 
if dpkg -s $paquete >/dev/null 2>&1; then
  echo "El paquete $paquete ya está instalado"
else
  sudo apt update -y
  sudo apt install $paquete -y
  echo "El paquete $paquete se ha instalado correctamente"
fi
informatica/sistemas_operativos/cursos/linux_para_devops_y_sysadmin/scripting.txt · Última modificación: por tempwin