Skip to content

Commit f80aff9

Browse files
committed
更新描述文件
1 parent 28f9eb5 commit f80aff9

File tree

1 file changed

+308
-26
lines changed

1 file changed

+308
-26
lines changed

README.md

Lines changed: 308 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,310 @@
1-
# 仓库说明
2-
一些常用脚本分享,该系列脚本仅供测试学习交流使用,请勿在生产环境中使用,若环境中包含重要数据,请务必在使用前将数据进行妥善备份。
3-
4-
# shell
5-
shell包含一些Linux常用脚本
6-
[查看介绍](./shell/README.md)
7-
8-
## 脚本使用方式
9-
以CheckSSL.sh脚本为例
10-
```bsah
11-
# 安装git工具 略,请自行使用yum或apt进行安装
12-
#下载脚本到服务器中
13-
git clone https://github.com/db-root/scripts.git
14-
# 或使用wget进行下载
15-
wget https://download.elisky.cn/scripts/shell/CheckSSL.sh
16-
cd scripts/shell
17-
# wget需要单独下载环境变量
18-
# wget https://download.elisky.cn/scripts/shell/CheckSSL.sh
19-
cp .env-template .env
20-
vim .env
21-
# 按照所需添加变量信息
22-
# 运行脚本,例如CheckSSL脚本。
23-
./CheckSSL.sh
24-
# 添加定时检测或持续检测
1+
---
2+
title: "Shell开源脚本分享"
3+
subitile: "Shell开源脚本分享"
4+
date: 2024-08-04T13:49:44+08:00
5+
draft: false
6+
categories: ["开源系列分享"]
7+
tags: ["开源","Shell脚本","Linux运维","安全运维"]
8+
slug: Shell Scripts
9+
image: "http://typora.elisky.cn/typora/img/OIP-C.h0Ymn-nEuf3mUpLKgfkyqwHaDJ"
10+
---
11+
# Eli-chang开源脚本集合使用说明
12+
欢迎使用Eli-chang的开源脚本集合。以下是每个脚本的详细使用说明、依赖描述、环境变量配置以及参数用法。<br />
13+
更新日期:2024年8月8日<br />
14+
为方便调用,该系列脚本已经增加统一入口,可以直接运行`bash <(curl -sL sc.eli1.top)`来获取帮助以及执行或下载对应脚本。<br />
15+
> 该系列脚本仅供测试学习交流使用,请勿在生产环境中使用,若环境中包含重要数据,请务必在使用前将数据进行妥善备份。<br />
16+
> 脚本已同步发布在GitHub和Gitee上,欢迎Star和Fork。<br />
17+
> Gitee: https://gitee.com/Eli-chang/scripts<br />
18+
> Github: https://github.com/db-root/scripts<br />
19+
> 系列脚本包括:<br />
20+
> - CheckSSL.sh 网站SSL证书到期时间监控<br />
21+
> - install-cri-docker.sh 安装cri-docker,Docker的CRI运行时<br />
22+
> - install-docker2.sh 安装或更新Docker到最新版本或指定版本<br />
23+
> - install-docker.sh 安装或更新Docker到最新版本或指定版本(Docker官方版,已添加国内镜像源支持)<br />
24+
> - install-nginx.sh 安装Nginx Web服务器<br />
25+
> - mng.sh 合并Nginx配置文件及其include的文件<br />
26+
> - OpenSSL.sh 生成自签名SSL证书<br />
27+
> - SystemInfoMonitor.sh 监控系统信息,包括CPU、内存、磁盘和网络使用率,并在超过阈值时发送告警(经过简单调试可实现钉钉、企业微信告警)。<br />
28+
29+
## CheckSSL.sh 脚本使用说明
30+
31+
### 脚本功能
32+
检查指定网站的SSL证书到期时间,并在到期前发送告警。
33+
34+
### 脚本依赖
35+
- `openssl`
36+
- `curl`
37+
38+
### 环境变量依赖
39+
- `bark_key`(可选,用于发送bark通知)<br />
40+
.env文件应和该脚本文件处于同一目录内,并且文件中应包含变量"bark_key",例如“bark_key=xxxxxxxxxx”,获取方式参考:[brak使用参考](https://bark.day.app/#/tutorial)<br />
41+
若不需要进行通知告警,则可以手动将脚本中的条件判断语句进行注释<br />
42+
也可以添加其他告警,例如钉钉、企微或其他webhook等告警通道<br />
43+
44+
例如:
45+
```bash
46+
# if [ -f ./.env ]; then
47+
# source ./.env
48+
# else
49+
# echo ".env file not found! Manually copy the ".env-template" file to ".env" and add variables as required"
50+
# exit 1
51+
# fi
52+
······
53+
54+
# get_ssl_expiry_date() {
55+
······
56+
# if [ $days_left -le 7 ]; then
57+
# curl -s https://api.day.app/$bark_key/SSL监控告警/"$site: 证书在 $days_left 天内过期"?group=jobtest
58+
# else
59+
# echo "$site: Certificate expires on $formatted_date"
60+
# fi
61+
# }
62+
```
63+
64+
### 参数用法
65+
- 无特定命令行参数,配置通过`.env`文件或脚本内硬编码。
66+
67+
### 使用方法
68+
1. 下载脚本:
69+
```bash
70+
bash <(curl -sL sc.eli1.top) CheckSSL download
71+
bash <(curl -sL sc.eli1.top) env download
72+
```
73+
2. 创建并配置环境变量文件:
74+
```bash
75+
cp env.sh .env
76+
vim .env
77+
# 例如设置bark_key
78+
```
79+
3. 运行脚本:
80+
```bash
81+
bash CheckSSL.sh
82+
```
83+
84+
## install-cri-docker.sh 脚本使用说明
85+
86+
### 脚本功能
87+
安装cri-docker,Docker的CRI运行时。
88+
89+
### 脚本依赖
90+
- `wget`
91+
- `tar`
92+
- `systemd`
93+
94+
### 环境变量依赖
95+
无特定环境变量依赖。
96+
97+
### 参数用法
98+
- 无参数,脚本直接执行安装流程。
99+
100+
### 使用方法
101+
1. 下载脚本:
102+
```bash
103+
bash <(curl -sL sc.eli1.top) install-cri-docker download
104+
```
105+
2. 运行脚本:
106+
```bash
107+
bash <(curl -sL sc.eli1.top) install-cri-docker
108+
```
109+
110+
## install-docker2.sh 脚本使用说明
111+
112+
### 脚本功能
113+
采用二进制安装或更新Docker到最新版本或指定版本。<br />
114+
目前已经测试过:Ubuntu 16+、Debain 11+、CentOS/RHEL/AlmaLinux/RockyLinux 7+、Alibaba Cloud Linux 2+、OpenSUSE/SUSE 12+<br />
115+
### 脚本依赖
116+
- `curl`
117+
- `tar`
118+
119+
### 环境变量依赖
120+
无特定环境变量依赖。
121+
122+
### 参数用法
123+
- `-s` :跳过版本选择,直接安装最新版本。
124+
125+
### 使用方法
126+
1. 下载脚本:
127+
```bash
128+
bash <(curl -sL sc.eli1.top) install-docker2
129+
```
130+
2. 运行脚本:
131+
```bash
132+
bash <(curl -sL sc.eli1.top) install-docker2 -s # 直接安装最新版本
133+
```
134+
135+
## install-docker.sh 脚本使用说明
136+
137+
### 脚本功能
138+
docker官方提供的安装脚本,已经替换docker官方的源,并添加了国内镜像源支持。但经过测试,目前仅支持常见Linux操作系统,其他可能支持性比较差,建议使用install-docker2
139+
140+
### 脚本依赖
141+
- `curl`
142+
143+
### 环境变量依赖
144+
- `mirror`(可选,用于指定软件源镜像)
145+
146+
### 参数用法
147+
- `--version <VERSION>`:安装指定版本的Docker。
148+
- `--channel <stable|test>`:选择安装通道。
149+
- `--mirror <Aliyun|AzureChinaCloud>`:选择使用哪个镜像源,默认使用的是国内镜像站。
150+
151+
### 使用方法
152+
1. 下载脚本:
153+
```bash
154+
bash <(curl -sL sc.eli1.top) install-docker
155+
```
156+
2. 运行脚本:
157+
```bash
158+
bash <(curl -sL sc.eli1.top) install-docker --mirror Aliyun
159+
```
160+
161+
## install-nginx.sh 脚本使用说明
162+
163+
### 脚本功能
164+
使用包管理器安装预编译版Nginx Web服务器。<br />
165+
默认不会安装任何模块,若有需要,可以手动使用包管理安装<br />
166+
目前已经测试过:Ubuntu 16+、Debain 11+、CentOS/RHEL/AlmaLinux/RockyLinux 7+、Alibaba Cloud Linux 2+、OpenSUSE/SUSE 12+<br />
167+
168+
### 脚本依赖
169+
- 根据系统不同,可能是`apt-get``yum``zypper`等包管理工具。
170+
171+
### 环境变量依赖
172+
无特定环境变量依赖。
173+
174+
### 参数用法
175+
- 无参数,脚本自动添加Nginx仓库并安装。
176+
177+
### 使用方法
178+
1. 下载脚本:
179+
```bash
180+
bash <(curl -sL sc.eli1.top) install-nginx.sh download
181+
```
182+
2. 运行脚本:
183+
```bash
184+
bash <(curl -sL sc.eli1.top) install-nginx.sh
185+
# 若需要安装模块,可以手动安装,yum install nginx-all-modules ,其他Linux发行版则使用对应的包管理器进行安装
186+
# 后续可能会考虑增加二进制安装的脚本或文档
187+
```
188+
189+
## mng.sh 脚本使用说明
190+
191+
### 脚本功能
192+
合并Nginx配置文件及其include的文件。
193+
194+
### 脚本依赖
195+
无特定脚本依赖。
196+
197+
### 环境变量依赖
198+
- `CFGPATH`:需要设置为实际的Nginx配置文件路径。
199+
200+
### 参数用法
201+
- 无参数,脚本输出合并后的配置文件到标准输出。
202+
203+
### 使用方法
204+
1. 下载脚本:
205+
```bash
206+
bash <(curl -sL sc.eli1.top) mng download
207+
```
208+
2. 配置并运行脚本:
209+
```bash
210+
vim mng.sh
211+
# 设置CFGPATH变量
212+
bash mng.sh > merged.conf
213+
# 若nginx配置文件路径为默认/etc/nginx/nginx.conf 则可以直接运行 bash <(curl -sL sc.eli1.top) mng
214+
```
215+
216+
## OpenSSL.sh 脚本使用说明
217+
218+
### 脚本功能
219+
生成自签名SSL证书。
220+
221+
### 脚本依赖
222+
- `openssl`
223+
224+
### 环境变量依赖
225+
- `bark_key`(可选,用于发送bark通知)
226+
227+
### 参数用法
228+
```bash
229+
wget https://download.elisky.cn/scripts/shell/OpenSSL.sh
230+
231+
./OpenSSL.sh --help
232+
233+
--ssl-domain: 生成ssl证书需要的主域名,如果是ip访问服务,则可忽略;
234+
--ssl-trusted-ip: 一般ssl证书只信任域名的访问请求,有时候需要使用ip去访问server,那么需要给ssl证书添加扩展IP,多个IP用逗号隔开;
235+
--ssl-trusted-domain: 如果想多个域名访问,则添加扩展域名(SSL_TRUSTED_DOMAIN),多个扩展域名用逗号隔开;
236+
--ssl-size: ssl加密位数,默认2048;
237+
--ssl-cn: 国家代码(2个字母的代号),默认CN;
238+
--ca-cert-recreate: 是否重新创建 ca-cert,ca 证书默认有效期 10 年,创建的 ssl 证书有效期如果是一年需要续签,那么可以直接复用原来的 ca 证书,默认 false;
239+
使用示例:
240+
./create_self-signed-cert.sh --ssl-domain=www.test.com --ssl-trusted-domain=www.test2.com \
241+
--ssl-trusted-ip=1.1.1.1,2.2.2.2,3.3.3.3 --ssl-size=2048 --ssl-date=3650
242+
```
243+
244+
245+
### 使用方法
246+
1. 下载脚本:
247+
```bash
248+
bash <(curl -sL sc.eli1.top) OpenSSL download
249+
```
250+
2. 运行脚本:
251+
```bash
252+
bash OpenSSL.sh --ssl-domain www.example.com --ssl-trusted-ip 192.168.1.1,10.0.0.1
253+
# 或 bash <(curl -sL sc.eli1.top) OpenSSL --ssl-trusted-ip 192.168.1.1,10.0.0.1
254+
```
255+
256+
## SystemInfoMonitor.sh 脚本使用说明
257+
258+
### 脚本功能
259+
监控系统信息,包括CPU、内存、磁盘和网络使用率,并在超过阈值时发送告警。
260+
261+
### 脚本依赖
262+
- `curl`
263+
264+
### 环境变量依赖
265+
- `bark_key`:用于发送bark通知。
266+
267+
### 参数用法
268+
- 无参数,脚本使用内置阈值和灵敏度设置。
269+
270+
### 内置变量
271+
```bash
272+
# 若有更改需求,则在脚本中进行编辑更改
273+
# 设置阈值和灵敏度(可以根据需求修改)
274+
CPU_THRESHOLD=80 # CPU利用率的阈值,超过80%触发curl命令
275+
MEMORY_THRESHOLD=80 # 内存利用率的阈值,超过80%触发curl命令
276+
DISK_THRESHOLD=80 # 磁盘使用率的阈值,超过80%触发curl命令
277+
NETWORK_THRESHOLD=1 # 网络流量的阈值(单位:兆字节),超过1兆字节触发curl命令
278+
279+
# 设置灵敏度阈值和检测时间间隔(可以根据需求修改)
280+
SENSITIVITY_THRESHOLD=3 # 连续超过阈值的次数,达到3次触发curl命令
281+
CHECK_INTERVAL=10 # 检测的时间间隔,单位为秒
282+
```
283+
284+
### 使用方法
285+
```bash
286+
wget https://download.elisky.cn/scripts/shell/SystemInfoMonitor.sh
287+
# 后台持续运行,若需要记录脚本运行日志,则使用追加重定向追加到目标日志文件中,但为了防止持续检测出现占用空间过大可以考虑丢弃运行记录
288+
# 丢弃运行记录如下:
289+
# nohup /PATH/to/SystemInfoMonitor.sh > /dev/null 2>&1
290+
nohup /PATH/to/SystemInfoMonitor.sh >> /var/log/SystemInfoMonitor.log
291+
292+
# 为确保重启服务器之后仍能够正常运行,则需要考虑将运行命令添加到crond任务或者是添加到开机自启脚本(vim /etc/rc.d/rc.local)
293+
# 方法一:编辑rc.local文件将启动命令添加到文件中
294+
vim /etc/rc.d/rc.local
295+
# 已有的命令不要修改
296+
#....
297+
# 在文件末尾添加
298+
nohup /PATH/to/SystemInfoMonitor.sh >> /var/log/SystemInfoMonitor.log
299+
#
300+
# nohup /PATH/to/SystemInfoMonitor.sh > /dev/null 2>&1
301+
302+
#方法二:添加定时任务
25303
crontab -e
26-
# 添加以下任务来每天的13点30分运行检测脚本
27-
30 13 * * * bash /<PATH>/<to>/scripts/shell/CheckSSL.sh > /dev/null
304+
@reboot /usr/bin/nohup /PATH/to/SystemInfoMonitor.sh >> /var/log/SystemInfoMonitor.log
305+
#
306+
# @reboot /usr/bin/nohup nohup /PATH/to/SystemInfoMonitor.sh > /dev/null 2>&1
307+
28308
```
309+
310+
请根据您的具体需求,按照上述指南使用相应的脚本。如果需要进一步的帮助或有其他问题,欢迎提交Issue或联系我。

0 commit comments

Comments
 (0)