forked from tianye/serverspeeder
-
Notifications
You must be signed in to change notification settings - Fork 0
/
serverspeeder.sh
190 lines (155 loc) · 6.01 KB
/
serverspeeder.sh
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
export PATH
#定义变量
#授权文件自动生成url
APX=http://rs.91yun.pw/apx1.php
#安装包下载地址
INSTALLPACK=https://github.com/91yun/serverspeeder/blob/test/91yunserverspeeder.tar.gz?raw=true
#判断版本支持情况的地址
CHECKSYSTEM=https://raw.githubusercontent.com/91yun/serverspeeder/test/serverspeederbin.txt
#bin下载地址
BINURL=http://rs.91yun.pw/
#取操作系统的名称
Get_Dist_Name()
{
if grep -Eqi "CentOS" /etc/issue || grep -Eq "CentOS" /etc/*-release; then
release='CentOS'
PM='yum'
elif grep -Eqi "Debian" /etc/issue || grep -Eq "Debian" /etc/*-release; then
release='Debian'
PM='apt'
elif grep -Eqi "Ubuntu" /etc/issue || grep -Eq "Ubuntu" /etc/*-release; then
release='Ubuntu'
PM='apt'
else
release='unknow'
fi
}
Get_OS_Bit()
{
if [[ `getconf WORD_BIT` = '32' && `getconf LONG_BIT` = '64' ]] ; then
bit='x64'
else
bit='x32'
fi
}
Get_Dist_Name
Get_OS_Bit
kernel=`uname -r`
kernel_result=""
echo -e "\r\n"
echo "===============System Info======================="
echo "$release "
echo "$kernel "
echo "$bit "
echo "================================================="
echo -e "\r\n"
#下周支持的内核库
wget $CHECKSYSTEM --no-check-certificate -O serverspeederbin.txt || { echo "Error downloading file, please try again later.";exit 1; }
#判断是否有完全匹配的内核
grep -q "$release/[^/]*/$kernel/$bit" serverspeederbin.txt
if [ $? -eq 0 ]; then
#如果完全匹配,则取的内核版本
kernel_result=$kernel
else
#如果没有完全匹配的内核,则开始模糊匹配
echo ">>>This kernel is not supported. Trying fuzzy matching..."
echo -e "\r\n"
#因为centos和ubuntu的版本号不太一样,所以centos匹配2.6.32-504.el6.x86_64到504 ,
if [ "$release" == "CentOS" ]; then
kernel1=`echo $kernel | awk -F '-' '{ print $1 }'`
kernel2=`echo $kernel | awk -F '-' '{ print $2 }' | awk -F '.' '{ print $1 }'`
elif [[ "$release" == "Ubuntu" ]] || [[ "$release" == "Debian" ]]; then
kernel1=`echo $kernel | awk -F '-' '{ print $1 }'`
kernel2=`echo $kernel | awk -F '-' '{ print $2 }'`
else
echo "This script only supports CentOS, Ubuntu and Debian."
exit 1
fi
grep -q "$release/[^/]*/$kernel1\(-\)\{0,1\}$kernel2[^/]*/$bit" serverspeederbin.txt
if [ $? -eq 1 ]; then
echo -e "\r\n"
echo -e "Serverspeeder is not supported on this kernel! View all supported systems and kernels here:\033[41;37m https://www.91yun.org/serverspeeder91yun \033[0m"
exit 1
else
#如果模糊匹配到了,就给玩家选
echo "There is no exact match for this kernel, please choose the closest one below:"
echo -e "The current kernel is \033[41;37m $kernel \033[0m"
echo -e "\r\n"
cat serverspeederbin.txt | grep "$release/[^/]*/$kernel1\(-\)\{0,1\}$kernel2[^/]*/$bit" | awk -F '/' '{ print NR":"$3 }'
echo -e "\r\n"
echo "Please enter the number of your option:"
read cver2
if [ "$cver2" == "" ]; then
echo "You did not choose any kernel options. Installation terminated."
exit 1
fi
echo -e "\r\n"
cver2str="cat serverspeederbin.txt | grep \"$release/[^/]*/$kernel1\(-\)\{0,1\}$kernel2[^/]*/$bit\" | awk -F '/' '{ print NR\":\"\$3 }' | awk -F ':' '/"$cver2:"/{ print \$2 }' | awk 'NR==1{print \$1}'"
kernel_result=$(eval $cver2str)
fi
fi
if [ "$kernel_result" == "" ]; then
echo "Unable to get kernel information. Installtion terminated."
exit 1
fi
echo "Installing ServerSpeeder, please wait for a moment..."
#开始匹配锐速的版本
serverspeederver=3.10.61.0
grep -q "$release/[^/]*/$kernel_result/$bit/$serverspeederver" serverspeederbin.txt
if [ $? == 1 ]; then
#如果没有匹配到这个版本的锐速,则取第一个
serverspeederverstr="grep \"$release/[^/]*/$kernel_result/$bit/\" serverspeederbin.txt | awk -F '/' 'NR==1{print \$5}'"
serverspeederver=$(eval $serverspeederverstr)
fi
BINFILESTR="cat serverspeederbin.txt | grep '$release/[^/]*/$kernel_result/$bit/$serverspeederver/0' | awk -F '/' '{ print \$1\"/\"\$2\"/\"\$3\"/\"\$4\"/\"\$5\"/\"\$7 }'"
BINFILE=$(eval $BINFILESTR)
if [ "$BINFILE" == "" ]; then
echo "Unable to get BINFILE. Installation terminated."
exit 1
fi
BIN=${BINURL}${BINFILE}
rm -rf serverspeederbin.txt
if [ "$1" == "" ]; then
MACSTR="LANG=C ifconfig eth0 | awk '/HWaddr/{ print \$5 }' "
MAC=$(eval $MACSTR)
if [ "$MAC" == "" ]; then
MACSTR="LANG=C ifconfig eth0 | awk '/ether/{ print \$2 }' "
MAC=$(eval $MACSTR)
fi
if [ "$MAC" == "" ]; then
echo "The name of network interface is not eth0, please retry after changing the name."
exit 1
fi
else
MAC=$1
fi
#如果自动取不到就退出
if [ "$MAC" = "" ]; then
echo "Unable to get MAC address. Installation terminated."
exit 1
fi
#下载安装包
wget -N --no-check-certificate -O 91yunserverspeeder.tar.gz $INSTALLPACK
tar xfvz 91yunserverspeeder.tar.gz || { echo "Unable to download Installation package. Installation terminated.";exit 1; }
#下载授权文件
wget -N --no-check-certificate -O apx.lic "$APX?mac=$MAC" || { echo "Unable to download lic file, please check: $APX?mac=$MAC";exit 1;}
mv apx.lic 91yunserverspeeder/apxfiles/etc/
#取得序列号
wget -N --no-check-certificate -O serverspeedersn.txt "$APX?mac=$MAC&sno"
SNO=$(cat serverspeedersn.txt)
rm -rf serverspeedersn.txt
sed -i "s/serial=\"sno\"/serial=\"$SNO\"/g" 91yunserverspeeder/apxfiles/etc/config
sed -i "s/apx-20341231/apx/g" 91yunserverspeeder/apxfiles/etc/config
rv=$release"_"$kernel_result
sed -i "s/acce-3.10.61.0-\[Debian_7_3.2.0-4-amd64\]/acce-$serverspeederver-[$rv]/g" 91yunserverspeeder/apxfiles/etc/config
#下载bin文件;
wget -N --no-check-certificate -O "acce-"$serverspeederver"-["$release"_"$kernel_result"]" $BIN
mv "acce-"$serverspeederver"-["$release"_"$kernel_result"]" 91yunserverspeeder/apxfiles/bin/
#切换目录执安装文件
cd 91yunserverspeeder
bash install.sh
#禁止修改授权文件
#chattr +i /serverspeeder/etc/apx*
bash /serverspeeder/bin/serverSpeeder.sh status