-
Notifications
You must be signed in to change notification settings - Fork 87
/
Copy pathsskcp.sh
130 lines (111 loc) · 3.1 KB
/
sskcp.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
#!/bin/bash
SERVER_IP=188.188.188.188
PORT=1999
PASSWORD=wg2999
SS_PORT=40000
SOCKS5_PORT=1080
start(){
# SS + KcpTun + Udp2RAW
udp2raw -c -r$SERVER_IP:$PORT -l0.0.0.0:4000 -k $PASSWORD --raw-mode faketcp -a >> /var/log/udp2raw.log &
kcp-client -r 127.0.0.1:4000 -l :$SS_PORT --key $PASSWORD -mode fast2 -mtu 1300 >> /var/log/kcp-client.log 2>&1 &
# ss-local -s 服务器IP地址 -p 服务器端口 -b 绑定本地IP -l 本地端口 -k 密码 -m 加密方式 [-c 配置文件]
ss-local -s 127.0.0.1 -p $SS_PORT -b 0.0.0.0 -l $SOCKS5_PORT -k $PASSWORD -m aes-256-gcm -t 300 >> /var/log/ss-local.log &
# status
}
stop(){
killall -9 kcp-client
killall -9 udp2raw
killall -9 ss-local
}
restart(){
stop
start
}
help(){
echo -e "${SkyBlue}:: Source: ${Green}https://git.io/sskcp.sh ${Font}By 蘭雅sRGB"
echo -e "${SkyBlue}:: Usage: ${GreenBG} bash sskcp.sh ${Yellow} [start|stop|restart|service|set] ${Font}"
echo
}
status(){
# log 和 命令行参数
cat /var/log/udp2raw.log | tail
cat /var/log/kcp-client.log | tail
cat /var/log/ss-local.log | tail
echo
if [[ -e /etc/openwrt_release ]]; then
ps | grep -e udp2raw -e kcp-client -e ss-local
else
ps ax | grep --color=auto -e udp2raw -e kcp-client -e ss-local
fi
echo
}
setconf()
{
echo -e "${SkyBlue}:: 修改脚本sskcp.sh记录参数,按${RedBG}<Enter>${SkyBlue}不修改! ${Yellow}"
head -n 6 sskcp.sh | tail -n 4 && echo -e "${SkyBlue}"
read -p ":: 1.请输入远程服务器IP: " sv_ip
read -p ":: 2.请输入udp2raw 端口: " port
read -p ":: 3.请输入套接转发密码: " passwd
read -p ":: 4.请输入 SS 服务端口: " ss_port
if [[ ! -z "${sv_ip}" ]]; then
sed -i "s/^SERVER_IP=.*/SERVER_IP=${sv_ip}/g" "sskcp.sh"
fi
if [[ ! -z "${port}" ]]; then
sed -i "s/^PORT=.*/PORT=${port}/g" "sskcp.sh"
fi
if [[ ! -z "${passwd}" ]]; then
sed -i "s/^PASSWORD=.*/PASSWORD=${passwd}/g" "sskcp.sh"
fi
if [[ ! -z "${ss_port}" ]]; then
sed -i "s/^SS_PORT=.*/SS_PORT=${ss_port}/g" "sskcp.sh"
fi
echo -e "${Yellow}" && head -n 7 sskcp.sh | tail -n 5 && echo -e "${Font}"
}
system_def(){
Green="\033[32m" && Red="\033[31m" && GreenBG="\033[42;37m" && RedBG="\033[41;37m"
Font="\033[0m" && Yellow="\033[0;33m" && SkyBlue="\033[0;36m"
}
systemd_service(){
# 安装启动服务
cat <<EOF >/usr/lib/systemd/system/sskcp.service
[Unit]
Description=sskcp.sh Service
After=network.target
[Service]
Type=forking
User=root
ExecStart=nohup /root/sskcp.sh start &
ExecReload=sh /root/sskcp.sh stop
[Install]
WantedBy=multi-user.target
EOF
chmod +x /root/sskcp.sh
systemctl enable sskcp.service
systemctl start sskcp.service
systemctl status sskcp.service
}
# 脚本命令参数
system_def
if [[ $# > 0 ]]; then
key="$1"
case $key in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
service)
systemd_service
;;
set)
setconf
;;
esac
else
status
fi
help