#!/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