小技巧|自动更新github-DNS解析(全)

很多时候都需要修改DNS来稳定网络,但手动更新实在不方便。

自动更新可以选择shell脚本或者SwitchHosts

DNS选的是helloGitHub的DNS文件下载地址

SwitchHosts

  1. 下载switchhosts
  2. 新建host
  3. 添加自动更新的地址
  4. 设置周期即可

详细如下:

下载地址:

官方下载可能会有点慢,下面也贴个百度云的4.0.3版本

官方下载||exe版本百度云:提取码:hhhh ||Linux版本在官网下叭

只需要新建一个DNS,在自动配置里加上下面这个链接:

https://cdn.jsdelivr.net/gh/521xueweihan/GitHub520@main/hosts

设置好更新频率,然后等他自动更新即可。

Linux注意要修改switchhosts软件的权限

可以先在/usr/share/applications这个目录下看看有没有switchhosts,然后直接给这个文件权限即可:

1
2
3
4
5
sudo chmod 600 ××× (只有所有者有读和写的权限) 
sudo chmod 644 ××× (所有者有读和写的权限,组用户只有读的权限)
sudo chmod 700 ××× (只有所有者有读和写以及执行的权限)
sudo chmod 666 ××× (每个人都有读和写的权限)
sudo chmod 777 ××× (每个人都有读和写以及执行的权限)

下面是近期的DNS,也可以手动添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# GitHub520 Host Start
140.82.114.26 alive.github.com
140.82.114.26 live.github.com
185.199.108.154 github.githubassets.com
140.82.114.22 central.github.com
185.199.108.133 desktop.githubusercontent.com
185.199.108.153 assets-cdn.github.com
185.199.108.133 camo.githubusercontent.com
185.199.108.133 github.map.fastly.net
199.232.69.194 github.global.ssl.fastly.net
140.82.114.3 gist.github.com
185.199.111.153 github.io
140.82.113.4 github.com
192.0.66.2 github.blog
140.82.114.6 api.github.com
185.199.108.133 raw.githubusercontent.com
185.199.108.133 user-images.githubusercontent.com
185.199.108.133 favicons.githubusercontent.com
185.199.108.133 avatars5.githubusercontent.com
185.199.108.133 avatars4.githubusercontent.com
185.199.108.133 avatars3.githubusercontent.com
185.199.108.133 avatars2.githubusercontent.com
185.199.108.133 avatars1.githubusercontent.com
185.199.108.133 avatars0.githubusercontent.com
185.199.108.133 avatars.githubusercontent.com
140.82.113.9 codeload.github.com
52.217.139.73 github-cloud.s3.amazonaws.com
52.216.104.27 github-com.s3.amazonaws.com
52.217.108.108 github-production-release-asset-2e65be.s3.amazonaws.com
52.216.142.228 github-production-user-asset-6210df.s3.amazonaws.com
52.217.81.148 github-production-repository-file-5c1aeb.s3.amazonaws.com
185.199.108.153 githubstatus.com
64.71.144.202 github.community
23.100.27.125 github.dev
185.199.108.133 media.githubusercontent.com


# Update time: 2021-11-27T12:05:26+08:00
# Update url: https://raw.hellogithub.com/hosts
# Star me: https://github.com/521xueweihan/GitHub520
# GitHub520 Host End

Shell脚本(不用看)

可以通过ubuntu的shell脚本去自动更新(不推荐),主要是通过date、test、tail、sed这几个命令做的。

date命令顾名思义,用于获取当前系统时间,使用+%H选项时可以单独返回当前小时(24小时制)。例如,当前时间为8:48,返回值为08.

test命令用于测试各种内容,关于test命令的用法大家可以自己查一下。需要注意的是,不同格式数据的比较方法不同。我刚开始写脚本的时候,进行比较的两个数据分别是字符串格式和整数格式,总是提示参数过多,后来将格式改为一致,并使用相应的比较符才可以正常使用。当对字符串进行大于或小于比较时,需要写为”>“或”<“,以避免shell将”<”和”>”符号理解为输入输出符号。

tail命令返回文件的最后几行信息。

sed命令可以对输入的字符串进行编辑替换。当使用-i选项调用sed命令时,可以直接修改目标文件。

具体可以自己试试啦。

1
2
3
4
5
6
7
8
9
10
#! /bin/bash
# change the hosts file to make sure some website couldn`t accessed in worktime

if test $(date +%H) \> "08" -a $(date +%H) \< "22"
thentail -7 /etc/hosts | sed -i /etc/hosts -e "s/# 127.0.0.1/ 127.0.0.1/g"
cat /etc/hosts
else
tail -7 /etc/hosts | sed -i /etc/hosts -e "s/ 127.0.0.1/# 127.0.0.1/g"
cat /etc/hosts
fi