Tabla de Contenidos
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
