update_hosts.sh 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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::8844"
  7. dns=$he_net
  8. blackhole=(
  9. '10::2222'
  10. '101::1234'
  11. '21:2::2'
  12. '2001::212'
  13. '2001:da8:112::21ae'
  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. '2123::3e12')
  22. num=1
  23. while read line
  24. do
  25. {
  26. #delete CR
  27. line=$(printf "$line"|tr -d '\r')
  28. #printf "$line"|od -tx1
  29. if [[ $line == "" ]]; then
  30. printf "\r\n" >> $new_hosts_file
  31. continue
  32. fi
  33. if [ "${line:0:2}" == "##" ]; then
  34. printf "$line\r\n" >> $new_hosts_file
  35. continue
  36. fi
  37. if [ "${line:0:1}" == "#" ]; then
  38. line=${line#'#'}
  39. fi
  40. url=$(printf "$line"|cut -d" " -f2)
  41. result=$(nslookup -querytype=AAAA "$url" "$dns"|grep 'AAAA address')
  42. name=$(printf "$result"|cut -f1)
  43. ip=$(printf "$result"|cut -d' ' -f4)
  44. for var in "${blackhole[@]}"; do
  45. if [[ $ip == "$var" && $ip != "" ]]; then
  46. ip=$(nslookup -vc -querytype=AAAA "$url" "$dns"|grep 'AAAA address'|cut -d' ' -f4)
  47. break
  48. fi
  49. done
  50. if [[ $ip == "" ]]; then
  51. printf "#$line\r\n" >> $new_hosts_file
  52. continue
  53. fi
  54. if [[ $name != $url && $name != "" ]]; then
  55. url=${url}" #"${name}
  56. fi
  57. printf "$ip $url\r\n" >> $new_hosts_file
  58. #print log to stdio
  59. echo "$num" "$ip" "$url"
  60. num=$((num+1))
  61. }
  62. done < $hosts_file
  63. exit 0