ss快速部署

安装

```bash
#!/usr/bin/env bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
#=================================================================#

System Required: CentOS 6+, Debian 7+, Ubuntu 12+

Description: One click Install Shadowsocks-Python server

Author: Teddysun i@teddysun.com

Thanks: @clowwindy https://twitter.com/clowwindy

Intro: https://teddysun.com/342.html

#=================================================================#

clear
echo
echo “#############################################################”
echo “# One click Install Shadowsocks-Python server #”
echo “# Intro: https://teddysun.com/342.html #”
echo “# Author: Teddysun i@teddysun.com #”
echo “# Github: https://github.com/shadowsocks/shadowsocks #”
echo “#############################################################”
echo

libsodium_file=”libsodium-1.0.18”
libsodium_url=”https://github.com/jedisct1/libsodium/releases/download/1.0.18-RELEASE/libsodium-1.0.18.tar.gz

Current folder

cur_dir=pwd

Stream Ciphers

ciphers=(
aes-256-gcm
aes-192-gcm
aes-128-gcm
aes-256-ctr
aes-192-ctr
aes-128-ctr
aes-256-cfb
aes-192-cfb
aes-128-cfb
camellia-128-cfb
camellia-192-cfb
camellia-256-cfb
chacha20-ietf-poly1305
chacha20-ietf
chacha20
rc4-md5
)

Color

red=’\033[0;31m’
green=’\033[0;32m’
yellow=’\033[0;33m’
plain=’\033[0m’

Make sure only root can run our script

[[ $EUID -ne 0 ]] && echo -e “[${red}Error${plain}] This script must be run as root!” && exit 1

Disable selinux

disable_selinux(){
if [ -s /etc/selinux/config ] && grep ‘SELINUX=enforcing’ /etc/selinux/config; then
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
setenforce 0
fi
}

#Check system
check_sys(){
local checkType=$1
local value=$2

local release=''
local systemPackage=''

if [[ -f /etc/redhat-release ]]; then
    release="centos"
    systemPackage="yum"
elif grep -Eqi "debian|raspbian" /etc/issue; then
    release="debian"
    systemPackage="apt"
elif grep -Eqi "ubuntu" /etc/issue; then
    release="ubuntu"
    systemPackage="apt"
elif grep -Eqi "centos|red hat|redhat" /etc/issue; then
    release="centos"
    systemPackage="yum"
elif grep -Eqi "debian|raspbian" /proc/version; then
    release="debian"
    systemPackage="apt"
elif grep -Eqi "ubuntu" /proc/version; then
    release="ubuntu"
    systemPackage="apt"
elif grep -Eqi "centos|red hat|redhat" /proc/version; then
    release="centos"
    systemPackage="yum"
fi

if [[ "${checkType}" == "sysRelease" ]]; then
    if [ "${value}" == "${release}" ]; then
        return 0
    else
        return 1
    fi
elif [[ "${checkType}" == "packageManager" ]]; then
    if [ "${value}" == "${systemPackage}" ]; then
        return 0
    else
        return 1
    fi
fi

}

Get version

getversion(){
if [[ -s /etc/redhat-release ]]; then
grep -oE “[0-9.]+” /etc/redhat-release
else
grep -oE “[0-9.]+” /etc/issue
fi
}

CentOS version

centosversion(){
if check_sys sysRelease centos; then
local code=$1
local version=”$(getversion)”
local main_ver=${version%%.*}
if [ “$main_ver” == “$code” ]; then
return 0
else
return 1
fi
else
return 1
fi
}

Get public IP address

get_ip(){
local IP=$( ip addr | egrep -o ‘[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}’ | egrep -v “^192.168|^172.1[6-9].|^172.2[0-9].|^172.3[0-2].|^10.|^127.|^255.|^0.“ | head -n 1 )
[ -z ${IP} ] && IP=$( wget -qO- -t1 -T2 ipv4.icanhazip.com )
[ -z ${IP} ] && IP=$( wget -qO- -t1 -T2 ipinfo.io/ip )
[ ! -z ${IP} ] && echo ${IP} || echo
}

get_char(){
SAVEDSTTY=stty -g
stty -echo
stty cbreak
dd if=/dev/tty bs=1 count=1 2> /dev/null
stty -raw
stty echo
stty $SAVEDSTTY
}

Pre-installation settings

pre_install(){
if check_sys packageManager yum || check_sys packageManager apt; then
# Not support CentOS 5
if centosversion 5; then
echo -e “$[{red}Error${plain}] Not supported CentOS 5, please change to CentOS 6+/Debian 7+/Ubuntu 12+ and try again.”
exit 1
fi
else
echo -e “[${red}Error${plain}] Your OS is not supported. please change OS to CentOS/Debian/Ubuntu and try again.”
exit 1
fi
# Set shadowsocks config password
echo “Please enter password for shadowsocks-python”
read -p “(Default password: teddysun.com):” shadowsockspwd
[ -z “${shadowsockspwd}” ] && shadowsockspwd=”teddysun.com”
echo
echo “—————————“
echo “password = ${shadowsockspwd}”
echo “—————————“
echo
# Set shadowsocks config port
while true
do
dport=$(shuf -i 9000-19999 -n 1)
echo “Please enter a port for shadowsocks-python [1-65535]”
read -p “(Default port: ${dport}):” shadowsocksport
[ -z “$shadowsocksport” ] && shadowsocksport=${dport}
expr ${shadowsocksport} + 1 &>/dev/null
if [ $? -eq 0 ]; then
if [ ${shadowsocksport} -ge 1 ] && [ ${shadowsocksport} -le 65535 ] && [ ${shadowsocksport:0:1} != 0 ]; then
echo
echo “—————————“
echo “port = ${shadowsocksport}”
echo “—————————“
echo
break
fi
fi
echo -e “[${red}Error${plain}] Please enter a correct number [1-65535]”
done

# Set shadowsocks config stream ciphers
while true
do
echo -e "Please select stream cipher for shadowsocks-python:"
for ((i=1;i<=$

   转载规则


《ss快速部署》 Jackie Tang(唐浩桀) 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
docker-kms-server docker-kms-server
安装 docker vlmscd docker pull mikolatero/vlmcsddocker run -d -p 1688:1688 –restart=always –name=”vlmcsd” mikolatero/vlmcs
2021-09-13 Jackie Tang(唐浩桀)
下一篇 
Windows中的wsl重置密码 Windows中的wsl重置密码
wsl 中的用户名同步 windows 的用户名,但是密码不同步,默认密码也不知道,所以,重置吧。 首先进 wsl 记下你的 Linux 用户名,输入whoami就行,或者到 home 里面自己看; 然后关闭所有 ubuntu/linux
2021-07-14 Jackie Tang(唐浩桀)
  目录