Skip to content

Instantly share code, notes, and snippets.

@jackyzonewen
Forked from trawor/turbo-qiniu.sh
Created March 19, 2016 03:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jackyzonewen/79527e9ac1b3aab7f73f to your computer and use it in GitHub Desktop.
Save jackyzonewen/79527e9ac1b3aab7f73f to your computer and use it in GitHub Desktop.
本脚本解决部分地区七牛上传速度慢的问题
#!/bin/bash
#
# 通过对比 ping 响应时间,找到本机最快的上传ip
# Travis@fir.im
#
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,有使用问题请联系 tw@fir.im (我相信你肯定没有问题的)\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