-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathinstall-socks5-amd.sh
130 lines (115 loc) · 3.59 KB
/
install-socks5-amd.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
# 介绍信息
echo -e "\e[32m
____ ___ ____ _ ______ ____
/ ___| / _ \ / ___| |/ / ___| ___|
\___ \| | | | | | ' /\___ \___ \
___) | |_| | |___| . \ ___) |__) | 供CF变量socks5
|____/ \___/ \____|_|\_\____/____/
\e[0m"
# 获取当前用户名
USER=$(whoami)
FILE_PATH="/home/${USER}/.s5"
###################################################
socks5_config(){
# 提示用户输入socks5端口号
read -p "请输入socks5端口号: " SOCKS5_PORT
# 提示用户输入用户名和密码
read -p "请输入socks5用户名: " SOCKS5_USER
while true; do
read -p "请输入socks5密码(不能包含@和:):" SOCKS5_PASS
echo
if [[ "$SOCKS5_PASS" == *"@"* || "$SOCKS5_PASS" == *":"* ]]; then
echo "密码中不能包含@和:符号,请重新输入。"
else
break
fi
done
# config.js文件
cat > ${FILE_PATH}/config.json << EOF
{
"log": {
"access": "/dev/null",
"error": "/dev/null",
"loglevel": "none"
},
"inbounds": [
{
"port": "$SOCKS5_PORT",
"protocol": "socks",
"tag": "socks",
"settings": {
"auth": "password",
"udp": false,
"ip": "0.0.0.0",
"userLevel": 0,
"accounts": [
{
"user": "$SOCKS5_USER",
"pass": "$SOCKS5_PASS"
}
]
}
}
],
"outbounds": [
{
"tag": "direct",
"protocol": "freedom"
}
]
}
EOF
}
install_socks5(){
socks5_config
if [ ! -e "${FILE_PATH}/s5" ]; then
curl -L -sS -o "${FILE_PATH}/s5" "https://github.com/amclubs/socks5-script/releases/download/amd/web"
else
read -p "socks5 程序已存在,是否重新下载覆盖?(Y/N 回车N)" downsocks5
downsocks5=${downsocks5^^} # 转换为大写
if [ "$downsocks5" == "Y" ]; then
curl -L -sS -o "${FILE_PATH}/s5" "https://github.com/amclubs/socks5-script/releases/download/amd/web"
else
echo "使用已存在的 socks5 程序"
fi
fi
if [ -e "${FILE_PATH}/s5" ]; then
chmod 777 "${FILE_PATH}/s5"
nohup ${FILE_PATH}/s5 -c ${FILE_PATH}/config.json >/dev/null 2>&1 &
sleep 2
pgrep -x "s5" > /dev/null && echo -e "\e[1;32ms5 is running\e[0m" || { echo -e "\e[1;35ms5 is not running, restarting...\e[0m"; pkill -x "s5" && nohup "${FILE_PATH}/s5" -c ${FILE_PATH}/config.json >/dev/null 2>&1 & sleep 2; echo -e "\e[1;32ms5 restarted\e[0m"; }
CURL_OUTPUT=$(curl -s ip.sb --socks5 $SOCKS5_USER:$SOCKS5_PASS@localhost:$SOCKS5_PORT)
if [[ $CURL_OUTPUT =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "代理创建成功,返回的IP是: $CURL_OUTPUT"
echo "socks://${SOCKS5_USER}:${SOCKS5_PASS}@${CURL_OUTPUT}:${SOCKS5_PORT}"
else
echo "代理创建失败,请检查自己输入的内容。"
fi
fi
}
########################开始的地方###########################
read -p "是否安装 socks5 (Y/N 回车N): " socks5choice
socks5choice=${socks5choice^^} # 转换为大写
if [ "$socks5choice" == "Y" ]; then
# 检查socks5目录是否存在
if [ -d "$FILE_PATH" ]; then
install_socks5
else
# 创建socks5目录
echo "正在创建 socks5 目录..."
mkdir -p "$FILE_PATH"
install_socks5
fi
else
echo "不安装 socks5"
fi
read -p "是否添加 crontab 守护进程的计划任务(Y/N 回车N): " crontabgogogo
crontabgogogo=${crontabgogogo^^} # 转换为大写
if [ "$crontabgogogo" == "Y" ]; then
echo "添加 crontab 守护进程的计划任务"
curl -s https://raw.githubusercontent.com/amclubs/am-serv00-socks5/main/check_cron_amd.sh | bash
else
echo "不添加 crontab 计划任务"
fi
echo "脚本执行完成。"