Buenos dias, espero todos esten bien.
Quisiera saber si por favor me podian ayudar con este error:
./portscan.sh: línea 11: error sintáctico cerca del elemento inesperado `else'
./portscan.sh: línea 11: `else'
No se que es lo que estoy haciendo mal, ya lo revise varias veces y no veo el error, el codigo es el siguiente:
#!/bin/bash
#!./portscan.sh
if [ $1 ]
ip_address=$1
for port in $( seq 1 65535 ); do
timeout 1 bash -c "echo ' ' > /dev/tcp/$ip_address/$port" 2>/dev/null && echo " [*] Port $port - OPEN" &
done; wait
else
echo -e "\n [*] Uso: ./portscan.sh <ip_address>\n"
exit 1
fi
Muchas gracias.
Te falta el then en el if. Ejemplo:
if command
then
# foo
else
# bar
fi
A veces se coloca directamente el then separándolo del if con punto y coma, simplemente porque para muchos puede ser más fácil de leer. Aunque es de índole personal.
Te recomiendo:
*.- https://www.freebsd.org/cgi/man.cgi?query=sh&sektion=&n=1
Específicamente: Flow-Control Constructs (if, while, for, case)
Tal vez te preguntes, qué es [. No es más que un comando, y al if lo que le interesa es la salida. Ese comando, que es el mismo que el comando test, retorna un número diferente a cero adrede, dependiendo de la condición.
El correspondiente manual del comando test, [:
*.- https://www.freebsd.org/cgi/man.cgi?test
~ DtxdF