Port Scanner Script

1. Port Scanner Script

arthur victor franco de arruda
vfraanco

(usa Ubuntu)

Enviado em 18/11/2019 - 11:19h

Alguém poderia me dar uma luz nesse Script, não sei como fazer gostaria de uma ajuda de como começa-lo


a)O script deverá receber dois parametros, o primeiro podera ser um porto utilizando a opção -n ou um ficheiro contendo varios portos descritos cada um nnuma linha utilizando a opção -f e o segundo deverá ser sempre um ficheiro contendo um endereço ip o nome de um host por linha representando os hosts que devem ser testados, utilizando a opção -f
exemplo: portscanner.sh -n 80 -h hostfile.txt
portscanner.sh -f portfile.txt -h hostfile.txt

b) deve ser verificado se foram introduzidos o numero correto de parametros. deve verificar ainda se a opção -n caso esteja a ser utilizada esta acompanhada de um valor entre 1 e 65535 e se as opções-f e -h estão acompanhadas de um ficheiro. caso nao se verifique o scripit deve terminar.

c) a verificação da resposta do porto pode ser realizada com o comando: nc -zvw1 host port. sempre que o porto estiver ativo a resposta a este comando contem a palavra succeeded
exemplo: result=$(nc -zvw1 www.google.com 443 2>&1 | grep succeded)

d) o scripit deve criar um ficheiro designado scan_report.txt, esse ficheiro deve indicar as portas que estao ativas,, inativas ou invalidas

já fiz isso

#!/bin/bash
#VARIABLES
num=$2


#SCRIPT

if [ $# -eq 4 ]
then
if [ $1 = "-n" ] || [ $1 = "-f" ] || [ $1 = "-h" ]
then
case "$1" in
"-n" )
# portscanner.h -n port -h hostfile

if [ $(echo $2 | grep -E "^[0-9]$|^[1-9][0-9]$|^[1-9][0-9][0-9]$|^[1-9][0-9][0-9][0-9]$|^[1-9][0-9][0-9][0-9][0-9]$") ]
then
if [ $2 -ge 1 ] && [ $2 -le 65535 ] && [ $3 = "-h" ] && [ -f $4 ]
then
for host in $(cat $4)
do
$(nc -zvw1 $host $2 | grep "succeeded")
done
else
exit
fi
else
exit
fi;;

"-f" )
# portscanner.h -f portfile -h hostfile

if [ -f $2 ] && [ $3 = "-h" ] && [ -f $4 ]
then
echo "Ainda falta fazer!"
else
exit
fi;;
"-h" )
case "$3" in
"-n" )
#portscanner.h -h hostfile -n port

if [ $(echo $4 | grep -E "^[0-9]$|^[1-9][0-9]$|^[1-9][0-9][0-9]$|^[1-9][0-9][0-9][0-9]$|^[1-9][0-9][0-9][0-9][0-9]$") ]
then
if [ -f $2 ] && [ $4 -ge 1 ] && [ $4 -le 65535 ]
then
echo "Ainda falta fazer!"
else
exit
fi
else
exit
fi;;
"-f" )
#portscanner.h -h hostfile -f portfile

if [ -f $2 ] && [ -f $4 ]
then
echo "Ainda falta fazer!"
else
exit
fi;;
* ) exit;;
esac;;
* ) exit;;
esac
else
exit
fi
fi





  


2. Re: Port Scanner Script

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 18/11/2019 - 15:24h

Boa tarde vfraanco.
Para fazer a verificação dos parâmetros,
recomendo o uso do comando "getopts".
Não entendi o comando:
if [ $(echo $2 | grep -E "^[0-9]$|^[1-9][0-9]$|^[1-9][0-9][0-9]$|^[1-9][0-9][0-9][0-9]$|^[1-9][0-9][0-9][0-9][0-9]$") ]
Nem este
if [ $(echo $4 | grep -E "^[0-9]$|^[1-9][0-9]$|^[1-9][0-9][0-9]$|^[1-9][0-9][0-9][0-9]$|^[1-9][0-9][0-9][0-9][0-9]$") ]
São para testar a porta?

Att.: Marcelo Oliver


3. Re: Port Scanner Script

arthur victor franco de arruda
vfraanco

(usa Ubuntu)

Enviado em 18/11/2019 - 16:43h

msoliver escreveu:


vfraanco escreveu:

Alguém poderia me dar uma luz nesse Script, não sei como fazer gostaria de uma ajuda de como começa-lo


a)O script deverá receber dois parametros,
o primeiro podera ser um porto utilizando a opção -n
ou um ficheiro contendo varios portos descritos cada um nnuma linha utilizando a opção -f
o segundo deverá ser sempre um ficheiro contendo um endereço ip o nome de um host por linha representando os hosts que devem ser testados, utilizando a opção -f
exemplo: portscanner.sh -n 80 -h hostfile.txt
portscanner.sh -f portfile.txt -h hostfile.txt

b) deve ser verificado se foram introduzidos o numero correto de parametros. deve verificar ainda se a opção -n caso esteja a ser utilizada esta acompanhada de um valor entre 1 e 65535 e se as opções-f e -h estão acompanhadas de um ficheiro. caso nao se verifique o scripit deve terminar.

c) a verificação da resposta do porto pode ser realizada com o comando: nc -zvw1 host port. sempre que o porto estiver ativo a resposta a este comando contem a palavra succeeded
exemplo: result=$(nc -zvw1 www.google.com 443 2>&1 | grep succeded)

d) o scripit deve criar um ficheiro designado scan_report.txt, esse ficheiro deve indicar as portas que estao ativas,, inativas ou invalidas

já fiz isso

#!/bin/bash
#VARIABLES
num=$2


#SCRIPT

if [ $# -eq 4 ]
then
if [ $1 = "-n" ] || [ $1 = "-f" ] || [ $1 = "-h" ]
then
case "$1" in
"-n" )
# portscanner.h -n port -h hostfile

if [ $(echo $2 | grep -E "^[0-9]$|^[1-9][0-9]$|^[1-9][0-9][0-9]$|^[1-9][0-9][0-9][0-9]$|^[1-9][0-9][0-9][0-9][0-9]$") ]
then
if [ $2 -ge 1 ] && [ $2 -le 65535 ] && [ $3 = "-h" ] && [ -f $4 ]
then
for host in $(cat $4)
do
$(nc -zvw1 $host $2 | grep "succeeded")
done
else
exit
fi
else
exit
fi;;

"-f" )
# portscanner.h -f portfile -h hostfile

if [ -f $2 ] && [ $3 = "-h" ] && [ -f $4 ]
then
echo "Ainda falta fazer!"
else
exit
fi;;
"-h" )
case "$3" in
"-n" )
#portscanner.h -h hostfile -n port

if [ $(echo $4 | grep -E "^[0-9]$|^[1-9][0-9]$|^[1-9][0-9][0-9]$|^[1-9][0-9][0-9][0-9]$|^[1-9][0-9][0-9][0-9][0-9]$") ]
then
if [ -f $2 ] && [ $4 -ge 1 ] && [ $4 -le 65535 ]
then
echo "Ainda falta fazer!"
else
exit
fi
else
exit
fi;;
"-f" )
#portscanner.h -h hostfile -f portfile

if [ -f $2 ] && [ -f $4 ]
then
echo "Ainda falta fazer!"
else
exit
fi;;
* ) exit;;
esac;;
* ) exit;;
esac
else
exit
fi
fi



Boa tarde vfraanco.
Para fazer a verificação dos parâmetros,
recomendo o uso do comando "getopts".
Não entendi o comando:
if [ $(echo $2 | grep -E "^[0-9]$|^[1-9][0-9]$|^[1-9][0-9][0-9]$|^[1-9][0-9][0-9][0-9]$|^[1-9][0-9][0-9][0-9][0-9]$") ]
Nem este
if [ $(echo $4 | grep -E "^[0-9]$|^[1-9][0-9]$|^[1-9][0-9][0-9]$|^[1-9][0-9][0-9][0-9]$|^[1-9][0-9][0-9][0-9][0-9]$") ]
São para testar a porta?

Att.: Marcelo Oliver


Sim, seria para testar a porta, nao sei se está é a melhor maneira.
Onde coloco o comando getopts?


4. Re: Port Scanner Script

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 18/11/2019 - 23:50h


vfraanco escreveu.
Sim, seria para testar a porta, nao sei se está é a melhor maneira.

Segue sugestão para testar se o argumento é numero e se está dentro dos limites.
#!/bin/bash
testamunero(){
[[ "$1" =~ ^([0-9]+)$ ]] && { echo "É Número";(( $1>0 && $1<=65535 )) && echo "Porta OK" || echo "Porta Not";} || echo "Não Número"
}
testamunero $1

Quanto ao "getopts",
No link abaixo tem um exemplo:
https://www.vivaolinux.com.br/topico/Comandos/Duvida-menu-e-submenus-e-organizar-melhor-o-codigo
Att.: Marcelo Oliver




5. Re: Port Scanner Script

arthur victor franco de arruda
vfraanco

(usa Ubuntu)

Enviado em 19/11/2019 - 13:53h

msoliver escreveu:


vfraanco escreveu.
Sim, seria para testar a porta, nao sei se está é a melhor maneira.

Segue sugestão para testar se o argumento é numero e se está dentro dos limites.
#!/bin/bash
testamunero(){
[[ "$1" =~ ^([0-9]+)$ ]] && { echo "É Número";(( $1>0 && $1<=65535 )) && echo "Porta OK" || echo "Porta Not";} || echo "Não Número"
}
testamunero $1

Quanto ao "getopts",
No link abaixo tem um exemplo:
https://www.vivaolinux.com.br/topico/Comandos/Duvida-menu-e-submenus-e-organizar-melhor-o-codigo
Att.: Marcelo Oliver



Marcelo, você poderia me disponibilizar o seu contato?


6. Re: Port Scanner Script

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/11/2019 - 16:02h


vfraanco escreveu:
Marcelo, você poderia me disponibilizar o seu contato?

vfraanco, boa tarde.
Estou terminando os testes com o 'getopts', logo mais posto.
Prefiro pelo fórum, assim fica registrado e ajuda outros usuários com a mesma dúvida....

Importante: echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver


7. Re: Port Scanner Script

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/11/2019 - 20:31h


Boa noite Vfraanco, de uma verificada:
#!/bin/bash
clear;
VM="\e[31;1m";
F="\e[m";

erro (){
echo -e "\n$1 Erro nos argumentos.\nUso:\n\
$0 -n porta -h arq_host\n\
$0 -f arq_portas -h arq_host\n\
Portas Válidas: de 1 a 65535\n"
exit;
}

inicio(){
echo -e "Comando: \"$0 $@\""
while getopts ":n:f:h:" OPC;do
Opc_array+=(${OPC});
case "$OPC" in
n) PORTA="$OPTARG";[[ "$PORTA" =~ ^([0-9]+)$ ]] && { (( $PORTA>0 && $PORTA<=65535 )) || erro 02;} || erro 01;;
f) ARQ_PORTAS="$OPTARG" ;;
h) ARQ_HOSTS="$OPTARG" ;;
:) echo -e "\n"$VM" OPÇãO \"-${OPTARG}\", REQUER ARGUMENTO."$F"" >&2 ; erro 03 ;;
?) echo -e "\nOpção \"-$OPC\" Inválida\n";;
esac
done
[ ${#Opc_array[@]} -ne 2 ] && erro #Requer duas opções.
}
inicio $@

Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver


8. Re: Port Scanner Script

arthur victor franco de arruda
vfraanco

(usa Ubuntu)

Enviado em 20/11/2019 - 07:37h

msoliver escreveu:


Boa noite Vfraanco, de uma verificada:
#!/bin/bash
clear;
VM="\e[31;1m";
F="\e[m";

erro (){
echo -e "\n$1 Erro nos argumentos.\nUso:\n\
$0 -n porta -h arq_host\n\
$0 -f arq_portas -h arq_host\n\
Portas Válidas: de 1 a 65535\n"
exit;
}

inicio(){
echo -e "Comando: \"$0 $@\""
while getopts ":n:f:h:" OPC;do
Opc_array+=(${OPC});
case "$OPC" in
n) PORTA="$OPTARG";[[ "$PORTA" =~ ^([0-9]+)$ ]] && { (( $PORTA>0 && $PORTA<=65535 )) || erro 02;} || erro 01;;
f) ARQ_PORTAS="$OPTARG" ;;
h) ARQ_HOSTS="$OPTARG" ;;
:) echo -e "\n"$VM" OPÇãO \"-${OPTARG}\", REQUER ARGUMENTO."$F"" >&2 ; erro 03 ;;
?) echo -e "\nOpção \"-$OPC\" Inválida\n";;
esac
done
[ ${#Opc_array[@]} -ne 2 ] && erro #Requer duas opções.
}
inicio $@

Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver


Apresenta o seguinte erro após a execução:
~$ ./portscanner.sh
Comando: "./portscanner.sh "

Erro nos argumentos.
Uso:
./portscanner.sh -n porta -h arq_host
./portscanner.sh -f arq_portas -h arq_host
Portas Válidas: de 1 a 65535





9. Re: Port Scanner Script

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 20/11/2019 - 11:15h

vfraanco escreveu:

msoliver escreveu:


Boa noite Vfraanco, de uma verificada:
#!/bin/bash
clear;
VM="\e[31;1m";
F="\e[m";

erro (){
echo -e "\n$1 Erro nos argumentos.\nUso:\n\
$0 -n porta -h arq_host\n\
$0 -f arq_porta -h arq_host\n\
Portas Válidas: de 1 a 65535\n"
exit;
}

inicio(){
echo -e "Comando: \"$0 $@\""
while getopts ":n:f:h:" OPC;do
Opc_array+=(${OPC});
case "$OPC" in
n) PORTA="$OPTARG";[[ "$PORTA" =~ ^([0-9]+)$ ]] && { (( $PORTA>0 && $PORTA<=65535 )) || erro 02;} || erro 01;;
f) ARQ_PORTAS="$OPTARG" ;;
h) ARQ_HOSTS="$OPTARG" ;;
:) echo -e "\n"$VM" OPÇãO \"-${OPTARG}\", REQUER ARGUMENTO."$F"" >&2 ; erro 03 ;;
?) echo -e "\nOpção \"-$OPC\" Inválida\n";;
esac
done
[ ${#Opc_array[@]} -ne 2 ] && erro 03 #Requer duas opções.
}
inicio $@

Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver


Apresenta o seguinte erro após a execução:
~$ ./portscanner.sh
Comando: "./portscanner.sh "

Erro nos argumentos.
Uso:
./portscanner.sh -n porta -h arq_host
./portscanner.sh -f arq_portas -h arq_host
Portas Válidas: de 1 a 65535

Bom dia vfraanco!
Se não informar as opções e os argumentos,
É mostrada a MENSAGEM de ERRO!!!!
O comando executado foi:
"./portscanner.sh "
Sem opções e argumentos.....
_______________________________________________________________
Uso:
./portscanner.sh -n porta -h arq_host
./portscanner.sh -f arq_portas -h arq_host
Portas Válidas: de 1 a 65535
________________________________________________________________

AVISO:
O script não está completo,
Isso é somente a parte que avalia Opções/Argumentos.

_________________________________________________________________
Importante: echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver


10. Re: Port Scanner Script

arthur victor franco de arruda
vfraanco

(usa Ubuntu)

Enviado em 20/11/2019 - 16:48h

msoliver escreveu:

vfraanco escreveu:

msoliver escreveu:


Boa noite Vfraanco, de uma verificada:
#!/bin/bash
clear;
VM="\e[31;1m";
F="\e[m";

erro (){
echo -e "\n$1 Erro nos argumentos.\nUso:\n\
$0 -n porta -h arq_host\n\
$0 -f arq_porta -h arq_host\n\
Portas Válidas: de 1 a 65535\n"
exit;
}

inicio(){
echo -e "Comando: \"$0 $@\""
while getopts ":n:f:h:" OPC;do
Opc_array+=(${OPC});
case "$OPC" in
n) PORTA="$OPTARG";[[ "$PORTA" =~ ^([0-9]+)$ ]] && { (( $PORTA>0 && $PORTA<=65535 )) || erro 02;} || erro 01;;
f) ARQ_PORTAS="$OPTARG" ;;
h) ARQ_HOSTS="$OPTARG" ;;
:) echo -e "\n"$VM" OPÇãO \"-${OPTARG}\", REQUER ARGUMENTO."$F"" >&2 ; erro 03 ;;
?) echo -e "\nOpção \"-$OPC\" Inválida\n";;
esac
done
[ ${#Opc_array[@]} -ne 2 ] && erro 03 #Requer duas opções.
}
inicio $@

Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver


Apresenta o seguinte erro após a execução:
~$ ./portscanner.sh
Comando: "./portscanner.sh "

Erro nos argumentos.
Uso:
./portscanner.sh -n porta -h arq_host
./portscanner.sh -f arq_portas -h arq_host
Portas Válidas: de 1 a 65535

Bom dia vfraanco!
Se não informar as opções e os argumentos,
É mostrada a MENSAGEM de ERRO!!!!
O comando executado foi:
"./portscanner.sh "
Sem opções e argumentos.....
_______________________________________________________________
Uso:
./portscanner.sh -n porta -h arq_host
./portscanner.sh -f arq_portas -h arq_host
Portas Válidas: de 1 a 65535
________________________________________________________________

AVISO:
O script não está completo,
Isso é somente a parte que avalia Opções/Argumentos.

_________________________________________________________________
Importante: echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver

Amigo, sinceramente eu não estou entendendo nada venho com muita dificuldade nesta disciplina por falta de metodologia na universidade e de um conteúdo uniforme para aprendizado na web. Sou brasileiro moro e estudo em portugal, aqui temos 40 minutos de aula teórica onde os alunos também vão tirando suas duvidas e acaba que a aula nao rende nada, fora o conteúdo limitado que nos é passado, sem apoio didáctico nenhum e pressão para entregar os projectos não se aprende nada direito. Sinceramente não sei como aproveitar essas informações que você me forneceu pois tudo que você usou eu nunca usei em classe, nunca me foi passado. Meu primeiro contacto com o linux foi muito bom me sai bem nas avaliações de linhas de comandos, venho gostando e tenho interesse em aprender mas ao chegar em shell script pela base precária que me foi passada venho sentindo dificuldades, gostaria de um norte




11. Re: Port Scanner Script

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 20/11/2019 - 18:34h

vfraanco escreveu:
Amigo, sinceramente eu não estou entendendo nada venho com muita dificuldade nesta disciplina por falta de metodologia na universidade e de um conteúdo uniforme para aprendizado na web.
Sou brasileiro moro e estudo em Portugal, aqui temos 40 minutos de aula teórica onde os alunos também vão tirando suas duvidas e acaba que a aula nao rende nada, fora o conteúdo limitado que nos é passado, sem apoio didáctico nenhum e pressão para entregar os projectos não se aprende nada direito.
Sinceramente não sei como aproveitar essas informações que você me forneceu pois tudo que você usou eu nunca usei em classe, nunca me foi passado.
Meu primeiro contacto com o linux foi muito bom me sai bem nas avaliações de linhas de comandos, venho gostando e tenho interesse em aprender mas ao chegar em shell script pela base precária que me foi passada venho sentindo dificuldades, gostaria de um norte

Boa tarde vfraanco.
Estou usando o mais básico possível.....Atribuição de variáveis, laços, condicionais, ...
Sinceramente, em 40 minutos, não vai aprender nada mesmo.... Corra atrás!!!!!
Na web, tem muito material bom, foi onde aprendi, como autodidata....
Recomendo: https://aurelio.net/shell/canivete/

Para "aproveitar as informações que passei", entenda o que cada comando faz,
Foi assim que comecei a entender, com um script pronto do vivaolinux,
fui destrinchando para entender cada passo..., cada comando...

Segue o script, "quase pronto", não tem o relatório.... Mas, isso é bem simples.
Coloquei a "Descrição nos ERROS".
Comentei o que cada função faz....
#/bin/bash
clear;
VM="\e[31;1m"; #Cor Vermelho
F="\e[m"; #Encerra cor

#Função Mensagens de erro e Modo de Uso.
erro (){
printf "$(linha)\n${VM}ERRO $1 ${F}\n$(linha)\n\
$0 -n porta -h arq_host\n\
$0 -h arq_host -n porta\n\
$0 -f arq_portas -h arq_host\n\
$0 -h arq_host -f arq_portas\n\
Portas Válidas: de 1 a 65535\n"
exit;
}

#função inicio, analisa as opções que podem ser "-f" "-n" "-h"
#E seus parâmetros, número da porta ou arquivos *O Ideal seria testar se o arquivo informado existe , bem fácil de implantar...
inicio(){
echo -e "$(linha)\nComando: \"$0 $@\"" # Somente para testes
while getopts ":n:f:h:" OPC;do
Opc+="${OPC}"; #Gera a var Opc, com as opções fornecidas
case "$OPC" in
n) porta="$OPTARG";
[[ "$porta" =~ ^([0-9]+)$ ]] && { (( $porta>0 && $porta<=65535 )) || erro "02 - Porta: \"$porta\" - Acima do limite";} || erro "01 - \"$porta\" - Não é Número";;
f) FPORTAS="$OPTARG" ;;
h) FHOSTS="$OPTARG" ;;
:) erro "03 - OPÇãO \"-${OPTARG}\", REQUER ARGUMENTO.";;
?) erro "[04] - Opção \"-${OPTARG}\" Inválida";; #Acusa erro para opção diferente de n f h
esac
done
((${#Opc}!=2)) && erro "05 - Falta Opção" #Testa se tem duas opções
#O condicional abaixo, define qual função sera chamada para executar o comando, de acordo com as opções passadas.
case $Opc in
nh|hn) comando01;;
fh|hf) comando02;;
*) erro "06 - Opção \"-${Opc}\" Incorreta";;
esac
}
#Se for informado uma porta, executa ....
comando01(){
while IFS=$'\n' read -r host;do
nc -zvw1 $host $porta
done<$FHOSTS
}

#Se forem informados dois arquivos.... Um laço (while) pega a Porta, e o outro o Host.
#Pega linha a linha dos arquivos, faz a combinação e gera o comando.
comando_02(){
while IFS=$'\n' read -r host;do
while IFS=$'\n' read -r porta;do
nc -zvw1 $host $porta
done<$FPORTAS
done<$FHOSTS
}

#função linha, imprime uma linha com "42" "—"
linha() {
printf '%*s' "42" ''|sed "s/ /—/g"
}

inicio $@ #chama a função inicio


DICA: Tente entender o que cada função faz
Obs.: O filtro com "grep succeded" não funciona...
__________________________________________________________________
Importante: echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver


12. Re: Port Scanner Script

arthur victor franco de arruda
vfraanco

(usa Ubuntu)

Enviado em 21/11/2019 - 08:06h

msoliver escreveu:

vfraanco escreveu:
Amigo, sinceramente eu não estou entendendo nada venho com muita dificuldade nesta disciplina por falta de metodologia na universidade e de um conteúdo uniforme para aprendizado na web.
Sou brasileiro moro e estudo em Portugal, aqui temos 40 minutos de aula teórica onde os alunos também vão tirando suas duvidas e acaba que a aula nao rende nada, fora o conteúdo limitado que nos é passado, sem apoio didáctico nenhum e pressão para entregar os projectos não se aprende nada direito.
Sinceramente não sei como aproveitar essas informações que você me forneceu pois tudo que você usou eu nunca usei em classe, nunca me foi passado.
Meu primeiro contacto com o linux foi muito bom me sai bem nas avaliações de linhas de comandos, venho gostando e tenho interesse em aprender mas ao chegar em shell script pela base precária que me foi passada venho sentindo dificuldades, gostaria de um norte

Boa tarde vfraanco.
Estou usando o mais básico possível.....Atribuição de variáveis, laços, condicionais, ...
Sinceramente, em 40 minutos, não vai aprender nada mesmo.... Corra atrás!!!!!
Na web, tem muito material bom, foi onde aprendi, como autodidata....
Recomendo: https://aurelio.net/shell/canivete/

Para "aproveitar as informações que passei", entenda o que cada comando faz,
Foi assim que comecei a entender, com um script pronto do vivaolinux,
fui destrinchando para entender cada passo..., cada comando...

Segue o script, "quase pronto", não tem o relatório.... Mas, isso é bem simples.
Coloquei a "Descrição nos ERROS".
Comentei o que cada função faz....
#/bin/bash
clear;
VM="\e[31;1m"; #Cor Vermelho
F="\e[m"; #Encerra cor

#Função Mensagens de erro e Modo de Uso.
erro (){
printf "$(linha)\n${VM}ERRO $1 ${F}\n$(linha)\n\
$0 -n porta -h arq_host\n\
$0 -h arq_host -n porta\n\
$0 -f arq_portas -h arq_host\n\
$0 -h arq_host -f arq_portas\n\
Portas Válidas: de 1 a 65535\n"
exit;
}

#função inicio, analisa as opções que podem ser "-f" "-n" "-h"
#E seus parâmetros, número da porta ou arquivos *O Ideal seria testar se o arquivo informado existe , bem fácil de implantar...
inicio(){
echo -e "$(linha)\nComando: \"$0 $@\"" # Somente para testes
while getopts ":n:f:h:" OPC;do
Opc+="${OPC}"; #Gera a var Opc, com as opções fornecidas
case "$OPC" in
n) porta="$OPTARG";
[[ "$porta" =~ ^([0-9]+)$ ]] && { (( $porta>0 && $porta<=65535 )) || erro "02 - Porta: \"$porta\" - Acima do limite";} || erro "01 - \"$porta\" - Não é Número";;
f) FPORTAS="$OPTARG" ;;
h) FHOSTS="$OPTARG" ;;
:) erro "03 - OPÇãO \"-${OPTARG}\", REQUER ARGUMENTO.";;
?) erro "[04] - Opção \"-${OPTARG}\" Inválida";; #Acusa erro para opção diferente de n f h
esac
done
((${#Opc}!=2)) && erro "05 - Falta Opção" #Testa se tem duas opções
#O condicional abaixo, define qual função sera chamada para executar o comando, de acordo com as opções passadas.
case $Opc in
nh|hn) comando01;;
fh|hf) comando02;;
*) erro "06 - Opção \"-${Opc}\" Incorreta";;
esac
}
#Se for informado uma porta, executa ....
comando01(){
while IFS=$'\n' read -r host;do
nc -zvw1 $host $porta
done<$FHOSTS
}

#Se forem informados dois arquivos.... Um laço (while) pega a Porta, e o outro o Host.
#Pega linha a linha dos arquivos, faz a combinação e gera o comando.
comando_02(){
while IFS=$'\n' read -r host;do
while IFS=$'\n' read -r porta;do
nc -zvw1 $host $porta
done<$FPORTAS
done<$FHOSTS
}

#função linha, imprime uma linha com "42" "—"
linha() {
printf '%*s' "42" ''|sed "s/ /—/g"
}

inicio $@ #chama a função inicio


DICA: Tente entender o que cada função faz
Obs.: O filtro com "grep succeded" não funciona...
__________________________________________________________________
Importante: echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver

Eu entendi um pouco a lógica que você usou, mas o comando (nc -zvw1 $host $2 | grep "succeeded") não deveria criar três arquivos por ex: ficheiros validos, ficheiros invalidos e ficheiro inativo?
como eu implemento isso?
ao executar da isso:
——————————————————————————————————————————
Comando: "./portscanner.sh "
——————————————————————————————————————————
ERRO 05 - Falta Opção
——————————————————————————————————————————
./portscanner.sh -n porta -h arq_host
./portscanner.sh -h arq_host -n porta
./portscanner.sh -f arq_portas -h arq_host
./portscanner.sh -h arq_host -f arq_portas
Portas Válidas: de 1 a 65535
não entendi essa parte no código.




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts