Creación de scripts en bash
3/19/20253 min read


Vamos a crear nuestro primer script en bash. Para lograrlo debemos crear cualquier archivo con el nombre acabado en .sh como vemos en el ejemplo $ touch script.sh.


Nosotros seguidamente con $ nano script.sh logramos acceder para editar el archivo. IMPORTANTE: Todos los scripts en bash deben empezar con #!/bin/bash donde se llama a bash para que el código escrito pueda ser interpretado sin problema. Entonces probaremos de crear un script. Bash es muy intuitivo, son comandos que podemos lanzar a a través de consola pero de manera más explicita. Por lo tanto probaremos con un echo -e "Hola esto es una prueba" Donde nos va a imprimir por consola el output de echo. El parámetro -e Nos ayuda a indicar que cualquier carácter especial pueda ser interpretado, como símbolos o caracteres especiales.


Para poder ejecutar el script tenemos 2 opciones: 1. $ bash script.sh donde le indicamos al terminal que queremos que bash ejecute el programa. O bien 2. chmod +x script.sh - ./script.sh Donde aplicamos permiso de ejecución al propietario, grupo y otros de manera simultanea para posteriormente ejecutar ./script.sh


Vamos a poner un script básico. Entonces haremos que nos muestre nuestra ip privada. Con $ ip a podemos ver nuestras interfaces de red. Yo en mi caso me voy a enfocar en ens33. Por lo tanto haremos lo siguiente...


Seguidamente haremos un $ ip a | grep ens33 Para grepear la linea donde aparece ens33. Por lo que el output será ese que nos aparece en la imagen.


$ ip a | grep ens33 | awk 'NR==2' - Lo que logramos añadiendo | awk 'NR==2' es que le indicamos que solo queremos ver en pantalla la segunda linea del output. Si pusiéramos awk 'NR==1' veriamos la primera.


Ahora si le agregamos a todo esto el comando | awk '{print $2}' Le indicaremos al output que solo queremos coger el 2 segunda palabra. Por lo tanto la segunda palabra o expresión seria 192.168.1.85/24 como vemos en el output final


Y por último con el awk final | awk '{print $1}' FS="/" Le indicamos al comando que queremos que del output 192.168.1.85/24 solo coja la primera expresión entre 192.168.1.85 y 24, esto ultimo lo indicamos con FS="/" Donde le indicamos que la barra / es el separador entre la primera expresión y la segunda. Entonces con awk '{print $1}' que coja la primera expresión. Por lo tanto el output final seria 192.168.1.85
$ ip a | grep ens33 | awk 'NR==2' | awk '{print $2}' | awk '{print $1}' FS="/"


Ahora todo esta linea de código la vamos a insertar en nuestro script bash. Volvemos a hacer un nano y como vimos en los apartados anteriores para poder imprimir esta linea de código necesitamos poner el comando dentro de $() el símbolo del dólar y los paréntesis para que nos salga el output del comando. Por lo tanto :
#!/bin/bash
echo -e "[+] Tu IP Privada es: $(ip a | grep ens33 | awk 'NR==2' | awk '{print $2}' | awk '{print $1}' FS="/")"


Ahora por último volvemos a realizar ./script.sh y veremos que como output nos sale [+] Tu IP Privada es: 192.168.1.85