forked from vitaminx/gd-utils
-
Notifications
You must be signed in to change notification settings - Fork 0
/
gdutilsinstall.sh
228 lines (201 loc) · 12 KB
/
gdutilsinstall.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
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
#!"C:\Program Files\Git\usr\bin\bash"
#/bin/bash
#颜色变量,因为颜色字符复杂,定义一个函数表示其代码字符串能够很好容错,更改也方便
color_yellow='\033[1;32m'
color_end='\033[0m'
echo -e "\n$color_yellow===== <<gdutils项目一件部署脚本要求及说明>> =====$color_end"
echo -e "$color_yellow---------------[ v2.1 by oneking ]---------------$color_end"
echo -e "$color_yellow 01.$color_end 本脚本是针对TG大神@viegg的gdutils项目一键部署脚本;"
echo -e "$color_yellow 02.$color_end 脚本包括“TD盘VPS上查询转存部署”和“Telegram机器人部署”两部分"
echo -e "$color_yellow 03.$color_end 本脚本适应CentOS/Debian/Ubuntu三种操作系统,自动识别、自动选择对应分支一键安装部署"
echo -e "$color_yellow 04.$color_end 三步即可完成部署:上传脚本到VPS → 设置脚本执行权限 → 运行"
echo -e "$color_yellow 05.$color_end 准备工作一:在TG上注册好机器人取得并记录下该机器人TOKEN"
echo -e "$color_yellow 06.$color_end 准备工作二:拥有一个域名绑定到cloudflare解析到该机器人所在服务器IP"
echo -e "$color_yellow 07.$color_end 准备工作三:向机器人@userinfobot获取个人TG账号ID并记录"
echo -e "$color_yellow 08.$color_end 准备工作四:注册好一个Google team drive加入sa并记录下该盘ID"
echo -e "$color_yellow 09.$color_end 经测试可用完美安装系统:Centos 7/8 debian 9/10 ubuntu 16.04/18.04/19.10/20.04"
echo -e "$color_yellow 10.$color_end 部署过程中有任何问题请把“错误截图”“部署VPS系统名称版本”信息发给TG:onekings 或 [email protected]"
echo -e "$color_yellow------------------------------------------------$color_end"
read -s -n1 -p "★★★ 如已做好以上[5/6/7/8]准备或不需要安装Telegram机器人请按任意键开始部署,如未做好准备请按“Ctrl+c”终止脚本 ★★★"
echo -e "\n$color_yellow------------------------------------------------$color_end"
# 识别操作系统
aNAME="$(uname -a)"
bNAME="$(cat /proc/version)"
cNAME="$(lsb_release -a)"
if [ -f "/etc/redhat-release" ]; then
if [[ $(cat /etc/redhat-release) =~ "CentOS" ]]; then
os="CentOS"
fi
elif [ "$aNAME"=~"Debian" -o "$bNAME"=~"Debian" -o "$cNAME"=~"Debian" ]; then
os="Debian"
elif [ "$aNAME"=~"Ubuntu" -o "$bNAME"=~"Ubuntu" -o "$cNAME"=~"Ubuntu" ]; then
os="Debian"
elif [ "$aNAME"=~"CentOS" -o "$bNAME"=~"CentOS" -o "$cNAME"=~"CentOS" ]; then
os="CentOS"
elif [ "$aNAME"=~"Darwin" -o "$bNAME"=~"Darwin" -o "$cNAME"=~"Darwin" ]; then
os="mac"
else
os="$bNAME"
fi
# 需要安装的软件工具及依赖
insofts=(epel-release update upgrade wget curl git unzip zip python3-distutils python3 python3-pip)
#根据操作系统设置变量
if [[ "$os" = "Debian" ]]; then
cmd_install="apt-get" #安装命令
cmd_install_rely="build-essential" #c++编译环境
nodejs_curl="https://deb.nodesource.com/setup_10.x" #nodejs下载链接
cmd_install_rpm_build="" #安装rpm-build
nginx_conf="/etc/nginx/sites-enabled/" #nginx配置文件存放路径
rm_nginx_default="rm -f /etc/nginx/sites-enabled/default" #删除default
echo
echo -e "$color_yellow★★★★★ 您的操作系统为Debian,即将为你开始部署gdutils项目 ★★★★★$color_end"
elif [[ "$os" = "Ubuntu" ]]; then
cmd_install="sudo apt-get"
cmd_install_rely="build-essential"
nodejs_curl="https://deb.nodesource.com/setup_10.x"
cmd_install_rpm_build=""
nginx_conf="/etc/nginx/sites-enabled/"
rm_nginx_default="rm -f /etc/nginx/sites-enabled/default"
echo -e "\n$color_yellow★★★★★ 您的操作系统为Ubuntu,即将为你开始部署gdutils项目 ★★★★★$color_end"
elif [[ "$os" = "CentOS" ]]; then
cmd_install="yum"
cmd_install_rely="gcc-c++ make"
nodejs_curl="https://rpm.nodesource.com/setup_10.x"
cmd_install_rpm_build="yum install rpm-build -y"
nginx_conf="/etc/nginx/conf.d/"
rm_nginx_default=""
echo -e "\n$color_yellow★★★★★ 您的操作系统为Centos,即将为你开始部署gdutils项目 ★★★★★$color_end"
elif [[ "$os" = "mac" ]]; then
echo -e "\n$color_yellow★★★★★ 您的操作系统为MacOS,请在图形界面手动安装 ★★★★★$color_end\n" && exit
else
echo -e "\n$color_yellow unknow os $OS, exit! $color_end" && exit
fi
echo -e "\n$color_yellow===== <<升级系统/更新软件/安装工具/安装依赖>> =====$color_end\n"
#安装which和sudo
if [[ "$(which which)" == "" ]]; then
echo -e "$color_yellow“which”开始安装......$color_end"
$cmd_install install which -y
echo -e "$color_yellow------------------------------------------------$color_end"
elif [[ "$(which sudo)" == "" ]]; then
echo -e "$color_yellow“sudo”开始安装......$color_end"
$cmd_install install sudo -y
echo -e "$color_yellow------------------------------------------------$color_end"
fi
#安装工具和依赖
for ((aloop = 0; aloop < ${#insofts[@]}; aloop++)); do
if [ ${insofts[$aloop]} = "update" -o ${insofts[$aloop]} = "upgrade" ]; then
echo -e "$color_yellow“${insofts[$aloop]}”开始安装......$color_end"
$cmd_install ${insofts[$aloop]} -y
echo -e "$color_yellow------------------------------------------------$color_end"
else
echo -e "$color_yellow“${insofts[$aloop]}”开始安装......$color_end"
$cmd_install install ${insofts[$aloop]} -y
echo -e "$color_yellow------------------------------------------------$color_end"
fi
done
echo -e "\n$color_yellow===== <<安装gdutils依赖-nodejs和npm/安装配置gdutils>> =====$color_end\n"
$cmd_install install $cmd_install_rely -y
curl -sL $nodejs_curl | bash -
$cmd_install install nodejs -y
$cmd_install_rpm_build
git clone https://github.com/iwestlin/gd-utils && cd gd-utils
npm config set unsafe-perm=true
npm i
echo -e "\n$color_yellow★★★ 恭喜您!gdutils统计转存系统已经正确安装完成,请上传sa到“./gd-utils/sa/”目录下完成最后的配置 ★★★$color_end\n"
#################################################################################################
echo -e "$color_yellow----------------------------------------------------------$color_end"
read -s -n1 -p "★★★ 下面将部署Telegram机器人,请确保准备所需条件已准备好,按任意键开始部署机器人;如未做好准备请按“Ctrl+c”终止部署机器人 ★★★"
echo -e "\n$color_yellow----------------------------------------------------------$color_end"
echo -e "\n$color_yellow ===== <<开始部署gdutils查询转存TG机器人>> ===== $color_end\n"
#输入“机器人token/TG账号ID/域名/转存目的盘ID”
read -p """请输入机器人token并回车
Your Bot Token =>:""" YOUR_BOT_TOKEN
#判断token是否输入正确
while [[ "${#YOUR_BOT_TOKEN}" != 46 ]]; do
echo -e "$color_yellow★★★ 机器人TOKEN输入不正确,请重新输入或按“Ctrl+C”结束安装! ★★★$color_end"
read -p """请输入机器人token并回车
Your Bot Token =>:""" YOUR_BOT_TOKEN
done
read -p """请输入你的域名(在cloudflare上解析到你机器人所在VPS的域名,格式:bot.abc.com)并回车
Your Domain Name =>:""" YOUR_DOMAIN_NAME
#判断域名是否正确
while [[ "$YOUR_DOMAIN_NAME" =~ "http" ]]; do
echo -e "$color_yellow★★★ “Your Domain Name”输入错误,应该输入你在cloudflare上解析的域名且不包含“http”,请重新输入或按“Ctrl+C”结束安装! ★★★$color_end"
read -p """请输入你的域名(在cloudflare上解析到你机器人所在VPS的域名,格式:bot.abc.com)并回车
Your Domain Name =>:""" YOUR_DOMAIN_NAME
done
read -p """请输入使用机器人的telegram账号ID(获取ID机器人@userinfobot)并回车
Your Telegram ID =>:""" YOUR_TELEGRAM_ID
#判断telegram ID是否正确(通过判断是不是纯数字)
until [[ $YOUR_TELEGRAM_ID =~ ^-?[0-9]+$ ]]; do
echo -e "$color_yellow★★★ 您的TG账号ID输入不正确,请重新输入或按“Ctrl+C”结束安装! ★★★$color_end"
read -p """请输入使用机器人的telegram账号ID(获取ID机器人@userinfobot)并回车
Your Telegram ID =>:""" YOUR_TELEGRAM_ID
done
read -p """请输入转存默认目的地团队盘ID(不指定转存目的地默认改地址,脚本强制要求输入团队盘ID)并回车
Your Google Team Drive ID =>:""" YOUR_GOOGLE_TEAM_DRIVE_ID
#判断google team drive ID是否正确(团队盘ID长度19位)
while [[ "${#YOUR_GOOGLE_TEAM_DRIVE_ID}" != 19 ]]; do
echo -e "$color_yellow★★★ 您的Google team drive ID输入不正确,请重新输入或按“Ctrl+C”结束安装! ★★★$color_end"
read -p """请输入转存默认目的地ID(不指定转存目的地默认该地址,脚本强制要求输入团队盘ID)并回车
Your Google Team Drive ID =>:""" YOUR_GOOGLE_TEAM_DRIVE_ID
done
cd ~ &&
sed -i "s/bot_token/$YOUR_BOT_TOKEN/g" ./gd-utils/config.js &&
sed -i "s/your_tg_username/$YOUR_TELEGRAM_ID/g" ./gd-utils/config.js &&
sed -i "s/DEFAULT_TARGET = ''/DEFAULT_TARGET = '$YOUR_GOOGLE_TEAM_DRIVE_ID'/g" ./gd-utils/config.js
echo -e "$color_yellow----------------------------------------------------------$color_end"
echo -e "$color_yellow“进程守护程序pm2”开始安装......$color_end"
cd /root/gd-utils &&
npm i pm2 -g && pm2 l
echo -e "$color_yellow启动守护进程......$color_end"
pm2 start server.js
echo -e "$color_yellow----------------------------------------------------------$color_end"
echo -e "$color_yellow“nginx”开始安装......$color_end"
cd ~ &&
$cmd_install install nginx -y
echo
echo -e "$color_yellow===== <<配置nginx服务>> ===== $color_end"
echo
echo -e "$color_yellow“nginx”起一个web服务......$color_end"
cd $nginx_conf
echo "server {
listen 80;
server_name $YOUR_DOMAIN_NAME;
location / {
proxy_pass http://127.0.0.1:23333/;
}
}" >${nginx_conf}gdutilsbot.conf &&
$rm_nginx_default
ls &&
nginx -t &&
nginx -c /etc/nginx/nginx.conf &&
nginx -s reload &&
netstat -tulpen
echo -e "$color_yellow----------------------------------------------------------$color_end"
echo -e "$color_yellow“检查网站是否部署成功”......$color_end"
curl $YOUR_DOMAIN_NAME/api/gdurl/count\?fid=124pjM5LggSuwI1n40bcD5tQ13wS0M6wg
echo -e "\n$color_yellow设置Webhook服务......$color_end"
print_webhook=$(curl -F "url=https://$YOUR_DOMAIN_NAME/api/gdurl/tgbot" "https://api.telegram.org/bot$YOUR_BOT_TOKEN/setWebhook")
echo
# 判断反向代理是否部署成功
if [[ $print_webhook =~ "true" ]]; then
echo -e "$color_yellow★★★ 恭喜你!GoogleDrive查询转存机器人部署成功,请回到TG界面给bot发送个“/help”获取使用帮助 ★★★$color_end"
else
echo -e "$color_yellow★★★ 很遗憾!机器人设置失败,请返回检查网站是否部署成功,并重复本安装过程 ★★★$color_end", exit!
fi
nginx -t && nginx -s reload && \n\n
cd ~
rm -f gdutilsinstall.sh
###########################gdutils功能建议##################################
# 本部分是对gdutils项目的建议,因为我主要用的是查询功能所以以下建议只涉及查询功能
# 1-把以下参数放入配置文件设置:sa存放路径
# 2-改sa“随机”使用为“顺序”分组使用;
# 3-增加输出模式,可以用命令行后带参数选择,具体模式建议:
# ①按一级或者二级文件夹显示数量大小
# ②可以一次性统计多个磁盘并且输出单个磁盘文件数和大小以及几个磁盘总和
# ③获取id对应的文件夹名或者磁盘明保存数据库,给个命令能够查询历史记录汇总或者指定汇总
# 4-查询过程中输出方式不要每次都输出一次,可以固定+数字变化
# 5-命令参数可加在ID前或后,如果非要固定一种的话就加在ID之前
# 6-命令行也改为默认sa模式
############################################################################