• 〖Linux〗实时更新 hosts 文件的脚本


    适用场景:

      下载了一个smarthosts的hosts文件,但hosts文件过旧导致一些ip地址已失效无法访问网络。

    脚本使用:

      ./hostsupdate # 直接从 /etc/hosts 中获得需要更新的域名

      ./hostsupdate /path/to/hosts # 从指定路径中获得需要更新的域名

    脚本源码:

     1 #!/bin/bash - 
     2 #===============================================================================
     3 #
     4 #          FILE: hostupdate
     5 # 
     6 #         USAGE: ./hostupdate 
     7 # 
     8 #   DESCRIPTION: 实时更新自己电脑上的hosts,加速网络的访问。
     9 # 
    10 #       OPTIONS: ---
    11 #  REQUIREMENTS: ---
    12 #          BUGS: ---
    13 #         NOTES: ---
    14 #        AUTHOR: linkscue(scue), 
    15 #  ORGANIZATION: 
    16 #       CREATED: 2013年08月10日 22时58分48秒 HKT
    17 #      REVISION:  ---
    18 #===============================================================================
    19 
    20 rm -f /tmp/host_new*
    21 host_new=/tmp/host_new$$
    22 
    23 # 1. 获取旧hosts文件来源
    24 if [[ -f "$1" ]]; then
    25     ref_host="$1"                               # 参考的host来源,建议smarthosts
    26 else
    27     ref_host=/etc/hosts                         # 默认从/etc/hosts上获取链接参考
    28 fi
    29 
    30 touch $host_new && tail -f $host_new &
    31 
    32 # 2. 更新hosts
    33 echo -e "e[0;35m --> 开始更新hosts文件e[0m" # purple
    34 cat $ref_host | while read line; do
    35     if [[ ${line:0:1} == '#' ]] || [[ ${#line} == 0 ]] 
    36         || [[ $(echo $line | grep localhost) != "" ]] 
    37         || [[ $(echo $line | grep $HOSTNAME) != "" ]]; then
    38         echo $line >> $host_new
    39     else
    40         addr=$(echo $line|awk '{print $2}')
    41         link=$(nslookup "$addr" | sed '/^$/d' | sed -n '$p' | sed -n 's/Address: //gp')
    42         if [[ "$link" != "" ]]; then
    43             printf "%-19s%s
    " $link $addr >> $host_new
    44         fi
    45     fi
    46 done
    47 
    48 # 3. 复制至 /etc/hosts
    49 echo -en "e[0;35m --> 更新hosts文件完毕,是否将新文件 $host_new 移动至 /etc/hosts[Y/n]:e[0m" # purple
    50 read -p "" reply
    51 if [[ ${reply} != "n" ]]; then
    52     sudo mv /etc/hosts{,.bak}
    53     sudo cp $host_new /etc/hosts
    54 fi
    55 echo -e "e[0;36m --> 全部操作完成,Enjoy!e[0m" # cyan
    hostupdate.sh
  • 相关阅读:
    BZOJ2530 : [Poi2011]Party
    BZOJ3998 : [TJOI2015]弦论
    BZOJ3941 : [Usaco2015 Feb]Fencing the Herd
    BZOJ3939 : [Usaco2015 Feb]Cow Hopscotch
    搬家啦~
    BZOJ3837 : [Pa2013]Filary
    使用Privoxy做智能代理切换
    放弃iOS4,拥抱iOS5
    让Xcode的 stack trace信息可读
    改进iOS客户端的升级提醒功能
  • 原文地址:https://www.cnblogs.com/scue/p/3587836.html
Copyright © 2020-2023  润新知