-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfrp.sh
173 lines (161 loc) · 4.28 KB
/
frp.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
#!/bin/bash
download_name="frp_0.39.1_linux_amd64.tar.gz"
frp_name="frp_0.39.1_linux_amd64"
file_url="https://github.com/fatedier/frp/releases/download/v0.39.1/${download_name}"
download_path="/tmp"
# 下载frp文件
download(){
if [ -d "${download_path}/frp" ];then
return
fi
cd $download_path && wget --no-check-certificate $file_url
if [ $? -eq 0 ];then
tar -xzf $download_name && mv ${frp_name} frp && cd frp
local frp_path=$(pwd)
echo "${download_name} 已解压到 ${frp_path}"
else
echo "frp下载失败"
fi
}
# frps
frps(){
# 不存在的话 就没有继续下去的必要了
if [ ! -d "${download_path}/frp" ];then
exit 1
fi
cd "${download_path}/frp"
chmod +x ./frps && mv ./frps /usr/bin/
cd ./systemd
sed -i 's/User=nobody/User=root/g' ./frps.service && mv ./frps.service /etc/systemd/system/
if [ $? -eq 0 ];then
systemctl enable frps.service && systemctl start frps.service
else
exit
fi
}
# frpc
frpc(){
# 不存在的话 就没有继续下去的必要了
if [ ! -d "${download_path}/frp" ];then
exit 1
fi
cd "${download_path}/frp"
chmod +x ./frpc && mv ./frpc /usr/bin/
cd ./systemd
sed -i 's/User=nobody/User=root/g' ./frpc.service && mv ./frpc.service /etc/systemd/system/
if [ $? -eq 0 ];then
systemctl enable frpc.service && systemctl start frpc.service
else
exit 1
fi
}
# 生成服务端配置文件
frps_ini(){
if [ ! -d "/etc/frp" ];then
mkdir -p /etc/frp
fi
read -p "监听端口 bind_port: " bind_port
read -p "token: " token
read -p "面板用户名 dashboard_user: " dashboard_user
read -p "面板密码 dashboard_pwd: " dashboard_pwd
read -p "面板监听端口 dashboard_port: " dashboard_port
cat>/etc/frp/frps.ini<<EOF
[common]
bind_port = $bind_port
token = $token
dashboard_user = $dashboard_user
dashboard_pwd = $dashboard_pwd
dashboard_port = $dashboard_port
EOF
}
# 生成客户端配置文件
frpc_ini(){
if [ ! -d "/etc/frp" ];then
mkdir -p /etc/frp
fi
echo "=== common公共部分 ==="
read -p "server_addr: " server_addr
read -p "server_port: " server_port
read -p "token: " token
echo
echo "=== 端口转发部分 ==="
read -p "本地需要转发的端口: " local_port
read -p "要转发到的远程端口: " remote_port1
echo
echo "=== socks5代理部分 ==="
read -p "远程端口 remote_port: " remote_port
read -p "设置用户名 plugin_user: " plugin_user
read -p "设置密码 plugin_passwd: " plugin_passwd
cat>/etc/frp/frpc.ini<<EOF
[common]
server_addr = $server_addr
server_port = $server_port
token = $token
# 端口转发
[port2port]
type = tcp
local_ip = 127.0.0.1
local_port = $local_port
remote_port = $remote_port1
# socks5 代理
[test_sock5]
type = tcp
remote_port = $remote_port
plugin = socks5
plugin_user = $plugin_user
plugin_passwd = $plugin_passwd
use_encryption = true
use_compression = true
EOF
}
# 检查是否有frps、frpc和frps.service、frpc.service
check(){
version=$(/usr/bin/$1 -v 2>/dev/null)
if [ ! -z $version ];then
echo "/usr/bin/$1 已经存在"
exit
fi
system_service="/etc/systemd/system/$1.service"
if [ -f $system_service ];then
echo "$system_service,请检查后再继续"
exit
fi
}
uninstall_frp(){
# 关于systemctl的处理不严谨,如果从未安装过会报错,但不影响执行
systemctl stop frps
systemctl stop frpc
systemctl disable frps
systemctl disable frpc
rm -rf "${download_path}/${download_name}"
rm -rf "${download_path}/frp"
rm -rf /usr/bin/frp*
rm -rf /etc/frp
rm -rf /etc/systemd/system/frp*
echo "清理、卸载frp成功"
}
start_menu(){
download
echo "请选择要安装的类型"
echo "0: exit"
echo "1: 安装frps服务端"
echo "2: 安装frpc客户端"
echo "3: 卸载frps、frpc服务"
read -p "你选择的是:" choose
case $choose in
0) exit
;;
1) check frps
frps_ini
frps
;;
2) check frpc
frpc_ini
frpc
;;
3) uninstall_frp
;;
*) echo "请选择0-2之间的数"
esac
}
start_menu