🛠️ Parámetros del script

🧾 Parámetros

Este script acepta las siguientes opciones desde la terminal:

Opción Descripción
-m <nombre> Buscar una máquina por su nombre
-i <IP> Buscar una máquina por su dirección IP
-y <máquina> Obtener el link de resolución (writeup) de una máquina
-o <sistema_operativo> Buscar máquinas por sistema operativo (ej. Linux, Windows)
-s <skills> Buscar máquinas por skill o categoría (ej. web, crypto, pwn)
-d <nivel> Filtrar máquinas por nivel de dificultad (ej. Fácil, Medio, Difícil, Insane)
-u Comprobar si hay actualizaciones disponibles y actualizar la base de datos (bundle.js)
-h Mostrar el panel de ayuda con todos los comandos disponibles

⚠️ Si se pasa una opción inválida o no reconocida, se muestra automáticamente el panel de ayuda (helpPanel).

🧩 Explicación del código paso a paso

📘 Función Panel de ayuda

# Panel de ayuda
function helpPanel() {
    echo -e "\n${yellowColour}[+] Uso:${endColour}"
    echo -e "\t${purpleColour}-m <máquina>${endColour} → Buscar máquina por nombre"
    echo -e "\t${purpleColour}-i <IP>${endColour} → Buscar la máquina por IP "
    echo -e "\t${purpleColour}-y <máquina>${endColour} → Obtener link de la resolución de la máquina  "
    echo -e "\t${purpleColour}-o <sistema_operativo>${endColour} → Buscar máquina por sistema operativo  "
    echo -e "\t${purpleColour}-s <skills>${endColour} → Buscar máquina por skills"
    echo -e "\t${purpleColour}-d <nivel>${endColour} → Filtra por dificultad  "
    echo -e "\t${purpleColour}-u${endColour} → Comprobar y actualizar"
    echo -e "\t${purpleColour}-h${endColour} → Mostrar este panel de ayuda\n"
}

⚙️ Parseo de opciones con getopts

# Indicadores y lógica principal
declare -i parameter_counter=0
# Chivatos
declare -i chivato_difficulty=0
declare -i chivato_os=0
while getopts "m:i:y:d:o:s:hu" arg; do
    case $arg in
        m) machineName=$OPTARG; let parameter_counter+=1;;
        u) let parameter_counter+=2;;
        i) ipAddress=$OPTARG; let parameter_counter+=3;;
        y) machineName=$OPTARG; let parameter_counter+=4;;
	d) nivel=$OPTARG; chivato_difficulty=1; let parameter_counter+=5;;
	o) so=$OPTARG;  chivato_os=1; let parameter_counter+=6;;
	s) skills=$OPTARG; let parameter_counter+=7;;

        h) ;;
    esac
done

🔍 ¿Qué hace esta sección?

🧠 ¿Cómo funciona parameter_counter?

🧪 ¿Y los chivatos?

💥 ¿Qué pasa si se usa una opción no reconocida?

🧩 ¿Cómo funciona la ejecución de funciones según parameter_counter?

if [ $parameter_counter -eq 1 ]; then
    searchMachine "$machineName"
elif [ $parameter_counter -eq 2 ]; then
    updateFiles
elif [ $parameter_counter -eq 3 ]; then
	searchIP "$ipAddress"
elif [ $parameter_counter -eq 4 ]; then
	 getYoutubeLink "$machineName"
elif [ $parameter_counter -eq 5 ]; then
	filtrar_nivel $nivel
elif [ $parameter_counter -eq 6 ]; then
	searchSo $so
elif [ $chivato_difficulty -eq 1 ] && [ $chivato_os -eq 1 ] ; then
	getOsDifficultyMachines $nivel $so
elif [ $parameter_counter -eq 7 ]; then
	searchSkills  "$skills"

else
    helpPanel
fi

Después de usar getopts para leer los parámetros, el valor de parameter_counter determina qué función ejecutar:

💻 Ejemplos de uso

Pasted image 20250512093031.png

📘 Resumen de uso y funciones del script

Si quieres entender cómo funciona esta búsqueda o cómo se conecta con otras funcionalidades, consulta la explicación completa del script aquí:
🧩 Explicación de las funciones del script#🎯 **Buscar por Habilidades (Skills)

📘 Ver las explicaciones de las funciones:

💡 Para ver ejemplos prácticos de uso: 💡 Ejemplo de uso

📜 Para obtener el script completo: 📜 Script Completo htbmachines.sh