云服务器无法拉取 GitHub 仓库的代码,并且 ping github.com 超时
环境说明
特殊说明:如果是买的腾讯云的服务器,请直接提问题工单给售后小哥,小哥会火速给你解决,并且网速飞快;当然如果想自己折腾,可以进行下面的操作
云服务器厂商:天翼云
当初一定是脑袋被门夹了,才会买天翼云的服务器,没有背景的个人不要妄图国企有什么服务了
操作系统:CentOS 7.6
解决思路
主要是通过定时更改系统 hosts 文件来解决访问 GitHub 超时的问题
GitHub 上有一个维护 GitHub 最新 hosts 的仓库:https://github.com/ineo6/hosts
他在文档中有写一个解决办法,通过 SwitchHosts 来自动更新
但是在 Linux 上我们完全可以写一个简单脚本 + 定时任务来解决这个事情:
- 脚本负责备份并更新系统 hosts 文件
- 添加一个定时执行脚本的定时任务,每天更新 hosts,保持最新
具体操作
编写备份更新系统 hosts 脚本,根据自己实际情况修改 sys_hosts_path 和 sys_hosts_back 变量,一个是系统 hosts 文件地址,另一个是备份后的地址
1
2
3
4
5# 先找个目录放脚本
[root@iviyothrrp72bw1a update-github-hosts]# pwd
/opt/scripts/update-github-hosts
[root@iviyothrrp72bw1a update-github-hosts]# vim update_github_hosts.sh
# 写入以下内容1
2
3
4
5
6
7
8
9
10
11
12
13
14!/bin/bash
sys_hosts_path="/etc/hosts"
sys_hosts_back="/etc/hosts.bak"
echo "正在备份原 hosts 文件..."
mv $sys_hosts_path $sys_hosts_back
echo "原 hosts 文件备份完成!"
echo "开始更新 Github Hosts 信息"
写入hosts里面默认的数据 一定要根据实际情况修改,就是原 /etc/hosts 中有几行内容,这里面就写入几行
echo "::1 localhost localhost.localdomain localhost6 localhost6.localdomain6" > $sys_hosts_path
echo "127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4" >> $sys_hosts_path
echo "127.0.0.1 iviyothrrp72bw1a iviyothrrp72bw1a" >> $sys_hosts_path
再写入最新的 github hosts 内容
curl https://gitlab.com/ineo6/hosts/-/raw/master/next-hosts >> $sys_hosts_path
echo "更新完毕!"添加系统定时任务
1
2
3
4
5
6# 进入编辑 Linux 定时任务
crontab -e
# 写入以下内容 意思是每天执行 然后执行日志会输入到 /opt/scripts/update-github-hosts/update_github_hosts_log 文件中
0 0 * * * sh /opt/scripts/update-github-hosts/update_github_hosts.sh >> /opt/scripts/update-github-hosts/update_github_hosts_log 2>&1
# 保存退出,使用以下命令进行验证,出现刚刚编辑的那一条,就代表设置成功
crontab -l第一次可以先执行一下脚本,然后 ping github 进行验证
1
2
3
4
5
6
7
8# 执行更新脚本
sh update_github_hosts.sh
# ping 验证
[root@iviyothrrp72bw1a update-github-hosts]# ping github.com
PING github.com (140.82.112.3) 56(84) bytes of data.
64 bytes from gist.github.com (140.82.112.3): icmp_seq=1 ttl=42 time=205 ms
64 bytes from gist.github.com (140.82.112.3): icmp_seq=3 ttl=42 time=207 ms
64 bytes from gist.github.com (140.82.112.3): icmp_seq=4 ttl=42 time=208 ms