This repository has been archived by the owner on Aug 18, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathadd.sh
executable file
·66 lines (50 loc) · 2.25 KB
/
add.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
#!/bin/bash
# 返回码 101 表示当前脚本的权限不足
# 返回码 102 表示修改当前工作目录失败
# 返回码 103 表示当前脚本参数不正确, 需要传递用户的名字拼音作为第一个参数
# 返回码 104 表示文件不存在
# 检查当前是否为 root 权限用户
if [ "$EUID" -ne 0 ]; then
echo "请使用 root 权限执行当前脚本"
exit 101
fi
# 修改当前工作目录
[[ -d /etc/wireguard ]] && cd /etc/wireguard || exit 102
# 检查参数是否存在, 不存在直接退出
[[ ! $# -eq 1 ]] && exit 103
# 待添加的人员名字(拼音)
NAME=$1
read -r -p "你输入的用户名是 $NAME, 正确请按 Enter 否则请按 ctrl-c: " _tmp
# 生成客户端私钥
CLIENT_PRIVATEKEY=$(wg genkey)
# 生成客户端公钥
CLIENT_PUBLICKEY=$(echo -n "${CLIENT_PRIVATEKEY}" | wg pubkey)
# 生成客户端预分享密钥
CLIENT_PRESHAREDKEY=$(wg genpsk)
# 生成随机 IP
RANDOMNUMBER1=$(expr "$(tr -cd '[:digit:]' < /dev/urandom | fold -w64 | head -n1 | cut -c -3 | tr -d '\n')" % 254 + 1)
RANDOMNUMBER2=$(expr "$(tr -cd '[:digit:]' < /dev/urandom | fold -w64 | head -n1 | cut -c -3 | tr -d '\n')" % 254 + 1)
CLIENT_IPADDRESS=$(echo -n 10.67."${RANDOMNUMBER1}"."${RANDOMNUMBER2}")
# 创建客户端文件夹
[[ ! -d $NAME ]] && mkdir "$NAME"
# 生成客户端配置文件
[[ -f client-template ]] && cp client-template "$NAME"/"$NAME".conf || exit 104
sed -i -e s#CLIENT_PRIVATEKEY#"${CLIENT_PRIVATEKEY}"#g \
-e s#CLIENT_IPADDRESS#"${CLIENT_IPADDRESS}"#g \
-e s#CLIENT_PRESHAREDKEY#"${CLIENT_PRESHAREDKEY}"#g \
"$NAME"/"$NAME".conf
# 生成服务端配置文件
[[ -f server-template ]] && \
sed -e s#CLIENT_PUBLICKEY#"${CLIENT_PUBLICKEY}"#g \
-e s#COMMENT#"${NAME}"#g \
-e s#CLIENT_IPADDRESS#"${CLIENT_IPADDRESS}"#g \
-e s#CLIENT_PRESHAREDKEY#"${CLIENT_PRESHAREDKEY}"#g \
server-template >> server.conf || exit 104
# 生成二维码
qrencode -o ./"$NAME"/"$NAME".png -r ./"$NAME"/"$NAME".conf &>/dev/null
# 生成 zip 压缩包
zip ./"$NAME"/"$NAME".zip ./"$NAME"/"$NAME".conf ./"$NAME"/"$NAME".png &>/dev/null
qrencode -t ansiutf8 -r ./"$NAME"/"$NAME".conf
echo "配置添加完成, 见 $NAME 文件夹或直接扫描上面的二维码"
# 重启服务端进程
systemctl restart wg-quick@server