Multithreading eines Bash IP-Scannerskripts

356
luciano mallmann2

Ich brauche einen IP-Multithread-Scanner, aber ich verstehe ihn nicht. Ich brauche das "seq", um mit Multitreahding
#! / Bin / bash zu arbeiten

function teste(){  for i in $(seq 0 10); do  CONNECT_TIMEOUT=1 # in seconds A="$1." B=$i IP_ADDRESS=$A$B PORT="$"  set +e data=$(curl --head -vs -m $ http://$:$ 2>&1)  exit_code="$?" data=$(echo -ne "$" | grep "Server: ")   set -e  if [[ $ -eq 0 ]]; then if [[ -n "$" ]]; then echo -ne "$ - $" else echo "$ - Got empty data for server!" fi else echo "$ - 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 $ & done 
0

1 Antwort auf die Frage

1
Gorgon

Vielleicht könnten Sie den Befehl verwenden parallel, um es zu lösen. Probe wie

funcOperation(){ # operation procedure }  export -f funcOperation cat ip_port.list | parallel -k -j 0 funcOperation 

Sie können hier auch seqdas Codebeispiel nicht verwenden.