¡Esta es una revisión vieja del documento!
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
Crearemos una clave SSH, un usuario, una contraseña y que dicho usuario pertenezca al grupo sudo. 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
