🚀 Primeros pasos para el buscador en Bash

Antes de comenzar a programar, vamos a crear el archivo de script y darle permisos de ejecución

touch htbmachines.sh
chmod +x htbmachines.sh

📦 Dependencias necesarias

Antes de usar el script, asegúrate de tener instalado:

Instalación rápida en Debian/Ubuntu:

sudo apt update && sudo apt install curl js-beautify moreutils

🚀 Instalación de bundle.js para HTB 🌟

Este script Bash interactúa con la base de datos de máquinas de HTB descargada desde https://htbmachines.github.io/bundle.js. Permite búsquedas avanzadas por nombre, IP, dificultad, sistema operativo, skills, y más.

📦 ¿Qué es bundle.js?

Es un archivo JavaScript que contiene:

Se descarga desde:

🔧 Pasos de Instalación 🔧

  1. Descargar bundle.js:
curl -o bundle.js https://htbmachines.github.io/bundle.js
  1. Instalar Dependencias:
  2. Formatear el archivo:
js-beautify bundle.js | sponge bundle.js

🧩 Ejemplo: Función ctrl_c para manejar Ctrl+C

Esto es lo primero útil que puedes incluir en cualquier script Bash interactivo. Nos permitirá controlar la salida del programa si el usuario lo interrumpe manualmente con Ctrl+C.

#!/bin/bash
# Ctrl+c

function ctrl_c(){
    echo -e "\n\n[!] Saliendo ... \n"
    exit 1
}

trap ctrl_c INT

sleep 10

🧠 Explicación del código:

  1. #!/bin/bash: Especifica el intérprete Bash.

  2. function ctrl_c() { ... }: Define la función que se ejecutará cuando se reciba Ctrl+C.

  3. trap ctrl_c INT: Asocia la señal de interrupción (INT) con la función ctrl_c.

  4. sleep 10: Simula una espera; puedes presionar Ctrl+C para ver cómo actúa la trampa.

🎨 Colores en scripts Bash

Una forma muy útil de mejorar la legibilidad y el feedback visual de nuestros scripts es usando colores en la salida de terminal. Esto nos permite resaltar advertencias, errores, información importante o éxito.

#!/bin/bash

# 🎨 Definición de colores
greenColour="\e[0;32m\033[1m"
endColour="\033[0m\e[0m"
redColour="\e[0;31m\033[1m"
blueColour="\e[0;34m\033[1m"
yellowColour="\e[0;33m\033[1m"
purpleColour="\e[0;35m\033[1m"
turquoiseColour="\e[0;36m\033[1m"
grayColour="\e[0;37m\033[1m"

# 🔒 Control de interrupción
function ctrl_c(){
    echo -e "\n\n${redColour}[!] Saliendo ...${endColour}\n"
    exit 1
}
trap ctrl_c INT

# 🧪 Mensaje de prueba
echo -e "${greenColour}[+] Todo salió bien${endColour}"
echo -e "${yellowColour}[i] Advertencia leve${endColour}"
echo -e "${redColour}[x] Error fatal${endColour}"

sleep 10