update_hosts.sh 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #!/bin/bash
  2. hosts_file=$1
  3. new_hosts_file=$2
  4. he_net="2001:470:20::2"
  5. google_a="2001:4860:4860::8888"
  6. google_b="2001:4860:4860::8888"
  7. dns=$he_net
  8. blackhole=(
  9. '10::2222'
  10. '101::1234'
  11. '21:2::2'
  12. '2123::3e12'
  13. '2001::212'
  14. '2003:ff:1:2:3:4:5fff:6'
  15. '2003:ff:1:2:3:4:5fff:7'
  16. '2003:ff:1:2:3:4:5fff:8'
  17. '2003:ff:1:2:3:4:5fff:9'
  18. '2003:ff:1:2:3:4:5fff:10'
  19. '2003:ff:1:2:3:4:5fff:11'
  20. '2003:ff:1:2:3:4:5fff:12'
  21. '2001:da8:112::21ae')
  22. num=1
  23. cat $hosts_file | while read line
  24. do
  25. {
  26. if [[ $line == "" ]]; then
  27. echo "" >> $new_hosts_file
  28. continue
  29. fi
  30. if [ "${line:0:2}" == "##" ]; then
  31. echo "$line" >> $new_hosts_file
  32. continue
  33. fi
  34. if [ "${line:0:1}" == "#" ]; then
  35. line=${line#'#'}
  36. fi
  37. url=$(echo "$line" | cut -d' ' -f2)
  38. result=$(nslookup -querytype=AAAA "$url" "$dns"|grep 'AAAA address')
  39. name=$(echo "$result"|cut -f1)
  40. ip=$(echo "$result"|cut -d' ' -f4)
  41. for var in "${blackhole[@]}"; do
  42. if [[ $ip == "$var" && $ip != "" ]]; then
  43. ip=$(nslookup -vc -querytype=AAAA "$url" "$dns"|grep 'AAAA address'|cut -d' ' -f4)
  44. break
  45. fi
  46. done
  47. if [[ $ip == "" ]]; then
  48. echo '#'"$line" >> $new_hosts_file
  49. continue
  50. fi
  51. if [[ $name != $url && $name != "" ]]; then
  52. url=${url}" #"${name}
  53. fi
  54. echo "$ip" "$url" >> $new_hosts_file
  55. #print log
  56. echo "$num" "$ip" "$url"
  57. num=$((num+1))
  58. }
  59. done
  60. wait
  61. exit 0