Bash program does not display data output

1

Good afternoon,

I'm programming in C and it's the first time I'm programming in Bash (shell-script).

I did some bash functions, learned to call and created an interactive menu with the user, my program does "basically" reading a wordlist and searches for files / folders within a certain location.

What happens "or rather it does not happen" is, there is no program error message, nor does it execute the identification code

The menu opens, runs, however when selecting the options it simply returns the menu. The program is very simple. Could someone tell me the possible problems? PS: Taking all the interactive menu, taking the functions and letting only what has run within the function the program rotates.

Many thanks to those who can help me, att.

    #!/bin/bash

    banner(){
    clear
    echo "------------------------------------------" 
    echo "|     RECON DE DIRETORIOS E ARQUIVOS     |"
    echo "------------------------------------------"
    echo "|  Uso: $0 <local>     |"
    echo "------------------------------------------"
    }

    menu(){
    clear
    echo ""
    echo "------------------------------------------"
    echo "|     RECON DE DIRETORIOS E ARQUIVOS     |"
    echo "------------------------------------------"
    echo "|  [1] - Consultar Diretorios            |"
    echo "|  [2] - Consultar Arquivos              |"
    echo "|  [3] - Consultar Arquivos/Diretorios   |"
    echo "|  [4] - Sair                            |"
    echo "------------------------------------------"
    echo -n "| Escolha uma opcao: "
    read OPT

    case $OPT in
    1) buscadir ;;
    2) buscaarq ;;
    3) buscadir;buscaarq ;;
    4) exit ;;
    *) echo "Opcao Invalida" ; echo ; menu ;
    esac
    }

    buscadir(){
    for palavra in $(cat lista2.txt)
    do
    resp=$(curl -s -o /dev/null -w "%{http_code}" $1/$palavra/)
    if [ $resp == "200" ]
    then
    echo "Diretorio encontrado --> $palavra"
    fi
    done
    }

    buscaarq(){
    for palavra in $(cat lista2.txt)
    do
    resp=$(curl -s -o /dev/null -w "%{http_code}" $1/$palavra)
    if [ $resp == "200" ]
    then
    echo "Arquivo encontrado --> $palavra"
    fi
    done
    }

    if [ "$1" == "" ]
    then
    banner
    else
    menu
    fi
    
asked by anonymous 26.12.2016 / 17:08

1 answer

1

Speak MHenrique12, okay?

I tested it in a way that worked right here, but I had some doubts ...

Question 01 : What would be the contents of the file lista2.txt?

Question 02 : Could you explain this line of curl, I do not handle too much ;-p

Changes I made to work based on the / etc / etc directory

OBS : The file list2.txt contained the following content:

cat lista2.txt 
vim 
passwd
ssh
profile

Example 01 :

MHenrique12_recon.sh /etc

------------------------------------------
|     RECON DE DIRETORIOS E ARQUIVOS     |
------------------------------------------
|  [1] - Consultar Diretorios            |
|  [2] - Consultar Arquivos              |
|  [3] - Consultar Arquivos/Diretorios   |
|  [4] - Sair                            |
------------------------------------------
| Escolha uma opcao: 1

Diretorio encontrado --> vim
Diretorio encontrado --> ssh

Example 02 :

MHenrique12_recon.sh /etc
------------------------------------------
|     RECON DE DIRETORIOS E ARQUIVOS     |
------------------------------------------
|  [1] - Consultar Diretorios            |
|  [2] - Consultar Arquivos              |
|  [3] - Consultar Arquivos/Diretorios   |
|  [4] - Sair                            |
------------------------------------------
| Escolha uma opcao: 2

Arquivo encontrado --> passwd
Arquivo encontrado --> shadow

The changes made were as follows:

Search function:

buscadir(){
    echo

    # Verifica se o arquivo existe, caso nao exista o programa encerra.
    [ ! -f "lista2.txt" ] && echo "Arquivo lista2.txt nao existe." && return 1


    for palavra in $(cat lista2.txt)
    do
        # 01 - Lista os arquivos no diretorio que foi passado por argumento
        # 02 - O primeiro grep seleciona somente os diretorios
        # 03 - O segundo pega a palavra atual do laco

        ls -la $DIR | grep ^d | grep -E ${palavra}$ > /dev/null

        # Se tudo ocorrer bem, mostre a mensagem...
        if [ $? == 0 ]
        then
            echo "Diretorio encontrado --> $palavra"
        fi
    done
    }

Searcharq function:

 buscaarq(){
    echo

    # Verifica se o arquivo existe, caso nao exista o programa encerra.
    [ ! -f "lista2.txt" ] && echo "Arquivo lista2.txt nao existe." && return 1
    for palavra in $(cat lista2.txt)
    do
        # 01 - Lista os arquivos no diretorio que foi passado por argumento
        # 02 - O primeiro grep seleciona o que nao for diretorio
        # 03 - O segundo pega a palavra atual do laco

        ls -la $DIR | grep ^[^d] | grep -E ${palavra}$ > /dev/null 

        # Se tudo ocorrer bem, mostre a mensagem...
        if [ $? == 0 ]
        then
            echo "Arquivo encontrado --> $palavra"
        fi
    done
    }

Start the program where the arguments are checked

# Guarda o valor passado por argumento
DIR=$1

if [ "$1" == "" ]
then
banner
else
menu
fi

I hope I have helped, I will be there if I need to; -)

    
06.01.2017 / 01:19