-
-
Save wongzigii/df9d8f599c353393d818 to your computer and use it in GitHub Desktop.
本脚本解决部分地区七牛上传速度慢的问题
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
# 通过对比 ping 响应时间,找到本机最快的上传ip | |
# [email protected] | |
# | |
function refresh_host() | |
{ | |
IP="$1" | |
UPLOAD_HOST="upload.qiniu.com" | |
TARGET_PATH="/etc/hosts" | |
TEMP_PATH=".temp_hosts" | |
echo "`sed '/upload.qiniu.com/d' $TARGET_PATH`" > $TEMP_PATH | |
echo "${IP} ${UPLOAD_HOST}" >> $TEMP_PATH | |
# | |
echo "允许使用sudo,自动帮你更新host" | |
echo -e "\n#### 你也可以用任意文本编辑器打开 \033[1;91m/etc/hosts\033[0m 在文件中加一行(如果已经设置,只需要改掉IP就可以了):\n\n\t${FINAL_IP} upload.qiniu.com\n" | |
sudo mv ${TEMP_PATH} ${TARGET_PATH} | |
} | |
echo "本脚本基于 http://t.cn/RLC7jc9 " | |
echo -e '\n本脚本解决部分地区七牛上传速度慢的问题,只用于本机,\e[1;91m请勿用于生产环境\e[0m,有使用问题请联系 [email protected] (我相信你肯定没有问题的)\n\n' | |
echo '#### 获取最快的服务器IP ...' | |
# 从 17ce.com 抓的七牛上传IP列表 | |
ips="upload.qiniu.com | |
103.24.223.19 | |
111.202.60.44 | |
175.43.120.13 | |
183.136.139.10 | |
122.143.27.13 | |
123.138.60.214 | |
183.136.139.16 | |
101.71.89.200 | |
218.6.111.179 | |
60.207.246.160 | |
113.5.251.205 | |
101.71.78.240 | |
61.54.219.52 | |
58.20.164.56 | |
119.84.111.27 | |
119.84.111.26 | |
101.71.78.234 | |
221.202.204.58 | |
59.49.82.51 | |
60.222.221.45 | |
14.215.100.100 | |
120.199.8.145 | |
115.231.23.18 | |
115.231.182.136 | |
116.55.236.53 | |
222.243.110.59 | |
111.13.135.183 | |
117.145.179.90 | |
183.136.139.16 | |
60.174.241.50 | |
183.136.139.16 | |
112.17.2.93 | |
219.145.172.16 | |
111.121.194.33" | |
for ip in $ips | |
do | |
# 只 ping 一次 | |
P=`ping -c 1 $ip | grep "icmp"` | |
# 读取 IP 和 延迟 | |
read IP T<<< $( echo ${P} | awk '{split($0,a,/[ |=|:]/); print a[4]" "a[11]}') | |
TIME=${T%%.*} | |
# 没有ping通,忽略 | |
if [[ -z "$TIME" ]] ; then | |
# 防止本地不通,给个默认值 | |
if [[ -z "$LOCAL_TIME" ]] ; then | |
LOCAL_TIME=1000 | |
PING_TIME=1000 | |
fi | |
continue | |
fi | |
# 本地的数值 | |
if [[ -z "$FINAL_IP" ]] ; then | |
LOCAL_IP=$IP | |
FINAL_IP=$IP | |
LOCAL_TIME=$TIME | |
PING_TIME=$TIME | |
continue | |
fi | |
# 对比用时并得到更快的IP | |
if (( ${TIME} < ${PING_TIME} )) ; then | |
PING_TIME=$TIME | |
FINAL_IP=$IP | |
echo -e "\t✓ 找到更快的IP:$IP , 延迟:$PING_TIME 毫秒" | |
fi | |
done | |
if [ "${LOCAL_IP}" == "${FINAL_IP}" ] ; then | |
echo -e "\n✓ 本地IP($LOCAL_IP) 已经是最快的了(只有 \033[1;91m${LOCAL_TIME}\033[0m 毫秒),如果还感觉不够快,请自检人品 :)" | |
else | |
refresh_host "${FINAL_IP}" | |
echo -e "#### 打完收工,去 \033[4;31mfir.im\033[0m 重新上传应用感受一下速度吧 :)\n" | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment