wget.sh 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #!/bin/bash
  2. # Usage: bash wget.sh <URL/FileName> <ThreadNum> <LoopNum> <HOST|Address>
  3. FileName=${1:-wget.txt}
  4. ThreadNum=${2:-10}
  5. LoopNum=${3:-20}
  6. ServerHost="$4"
  7. UserAgent="Mozilla/5.0"
  8. FileMode=0
  9. HostMode=0
  10. if [ -f "${FileName}" ]; then
  11. FileMode=1
  12. fi
  13. echo "${ServerHost}" |grep -q "|"
  14. if [ $? -eq 0 ]; then
  15. ServerName=`echo "${ServerHost}" |cut -d'|' -f1 |sed 's/[[:space:]]//g'`
  16. ServerAddr=`echo "${ServerHost}" |cut -d'|' -f2 |sed 's/[[:space:]]//g'`
  17. [ -n "$ServerName" ] && [ -n "$ServerAddr" ] && HostMode=1
  18. fi
  19. PIPE=$(mktemp -u)
  20. mkfifo $PIPE
  21. exec 777<>$PIPE
  22. trap "exec 777>&-;exec 777<&-;rm $PIPE;exit 0" 2
  23. for((i=0; i<$ThreadNum; i=i+1)); do
  24. echo >&777
  25. done
  26. function Task() {
  27. if [ -n "$1" ]; then
  28. if [ $HostMode -eq 0 ]; then
  29. wget --no-check-certificate --header="User-Agent: ${UserAgent}" --header="Referer: $1" -O /dev/null "$1" >/dev/null 2>&1
  30. else
  31. _URL=`echo "$1" |sed "s/$ServerName/$ServerAddr/"`
  32. wget --no-check-certificate --header="User-Agent: ${UserAgent}" --header="Referer: $1" --header="Host: $ServerName" -O /dev/null "$_URL" >/dev/null 2>&1
  33. fi
  34. fi
  35. echo >&777
  36. }
  37. for((i=0; i<$LoopNum; i=i+1)); do
  38. if [ $FileMode -eq 1 ]; then
  39. for line in `cat ${FileName}`; do
  40. read -u777
  41. _LINE=`echo -ne "$line" |sed 's/\r//g' |sed 's/\n//g'`
  42. echo "URL: $_LINE"
  43. Task "$_LINE" &
  44. done
  45. else
  46. read -u777
  47. _LINE=`echo -ne "${FileName}" |sed 's/\r//g' |sed 's/\n//g'`
  48. echo "URL: $_LINE"
  49. Task "$_LINE" &
  50. fi
  51. done
  52. exit 0