Многопоточность скрипта Bash IP Scanner


0

Мне нужно сделать многопоточный сканер IP, но я его не получаю, мне нужен "seq" для работы с многопоточностью
#! / Bin / bash

function teste(){

    for i in $(seq 0 10); do

    CONNECT_TIMEOUT=1 # in seconds
    A="$1."
    B=$i
    IP_ADDRESS=$A$B
    PORT="${2}"

    set +e
    data=$(curl --head -vs -m ${CONNECT_TIMEOUT} http://${IP_ADDRESS}:${PORT} 2>&1) 
    exit_code="$?"
    data=$(echo -ne "${data}" | grep "Server: ") 

    set -e

    if [[ ${exit_code} -eq 0 ]]; then
    if [[ -n "${data}" ]]; then
    echo -ne "${IP_ADDRESS} - ${data}"
    else
    echo "${IP_ADDRESS} - Got empty data for server!"
    fi
    else
    echo "${IP_ADDRESS} - no server."
    fi

    done

}

set -e

if [[ $# -ne 2 ]]; then
echo "Usage: $(basename "$0") ip_address_number port" 
exit 1
fi

threads=10;

threads=$(( $threads - 1))

for thread in `seq $threads`
do
teste ${1} &
done

Ответы:


1

Может быть, вы могли бы использовать команду parallelдля ее решения. Образец как

funcOperation(){
    # operation procedure
}

export -f funcOperation
cat ip_port.list | parallel -k -j 0 funcOperation

Вы также можете использовать seq, здесь я не ставлю образец кода.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.