一键脚本(推荐)
curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/document_modifier.sh && chmod +x document_modifier.sh && ./document_modifier.sh
你只需要准备好钉钉报警机器人webhook地址就行。
文档:https://open.dingtalk.com/document/orgapp/custom-robot-access
以下内容为手动安装,不懂的地方可以看看
需求
- 有时候域名太多,时间一长,你会不记得快要续期了
- 服务器太多,需要监控,这应该是刚需
- 证书申请来申请去,自动续签鬼知道会不会出问题
痛点
监控还要安装各种东西,会出岔子,折腾够呛,难免费时费力,所以,我的方案就是使用脚本,快速高效。脚本公开透明,放心食用~
创建钉钉报警机器人
文档:https://open.dingtalk.com/document/orgapp/custom-robot-access
记得在安全设置那里写上服务器IP地址,也就是你放脚本的服务器IP地址
最后复制webhook地址
创建必要文件
mkdir -p /home/domain
touch /home/domain/warnfile
touch /home/domain/logssl
touch /home/domain/serverlog
touch /home/domain/check_ssl.txt
安装依赖
sudo apt-get update
sudo apt-get install whois bc
pip install requests
下载关键脚本
cd /home/domain
wget https://raw.githubusercontent.com/woniu336/open_shell/main/domain_expiry_reminder.sh
wget https://raw.githubusercontent.com/woniu336/open_shell/main/warnsrc.py
wget https://raw.githubusercontent.com/woniu336/open_shell/main/daily_report.sh
wget https://raw.githubusercontent.com/woniu336/open_shell/main/check_ssl.sh
wget https://raw.githubusercontent.com/woniu336/open_shell/main/monitor_server.sh
设置权限
chmod -R 755 /home/domain
修改脚本
- check_ssl.txt 添加需要检测证书的域名
- check_ssl.sh 证书检测脚本
- monitor_server.sh 服务器健康检测脚本
- domain_expiry_reminder.sh和warnsrc.py 域名到期检测脚本
- daily_report.sh 每日生成检测报告的脚本
文件名 | 需要修改的内容 |
---|---|
check_ssl.txt | 添加域名证书到期检测文件,每行一个域名 |
check_ssl.sh | TOKEN=“Webhook地址” |
monitor_server.sh | DINGTALK_WEBHOOK=“Webhook地址” |
domain_expiry_reminder.sh | for line in aaa.com bbb.com 多个域名空格隔开 |
warnsrc.py | url = ‘Webhook地址’ |
daily_report.sh | DINGTALK_WEBHOOK=“Webhook地址” |
提醒:
for line in aaa.com bbb.com
把aaa.com bbb.com移除,改成你的域名
此外monitor_server.sh还需要修改一个地方:
需要监控的服务器IP、端口、标签
declare -A TARGET_SERVERS=(
#["8.8.8.8"]="端口|标签"
["192.168.1.8"]="3000|腾讯云HK"
)
测试说明
不把数值改大一点,是没有通知的,因为默认数值比较小,不然啥事没有就天天通知,岂不是烦人~
check_ssl.sh:if [ $days -lt 60 ]; #改成60天或者更大,方便测试
monitor_server.sh: [“192.168.1.8”]=“3000|腾讯云HK” 改成没有放行的端口
domain_expiry_reminder.sh: if [ $expiry_date -lt 200 ]; 改成200天
daily_report.sh: 手动运行测试,cd /home/domain && ./daily_report.sh
定时任务
- daily_report.sh脚本很推荐,
- 因为会养成你每天下午2点就收到钉钉通知报告的习惯。时间一长,你会记得去看~
(crontab -l ; echo "30 2 */3 * * cd /home/domain && ./domain_expiry_reminder.sh >/dev/null 2>&1") | crontab -
(crontab -l ; echo "0 14 * * * cd /home/domain && ./daily_report.sh >/dev/null 2>&1") | crontab -
(crontab -l ; echo "10 3 * * * cd /home/domain && ./check_ssl.sh >/dev/null 2>&1") | crontab -
(crontab -l ; echo "*/2 * * * * cd /home/domain && ./monitor_server.sh >/dev/null 2>&1") | crontab -
这四个命令都是用于向 crontab
添加定时任务的命令,具体解读如下:
域名到期提醒任务:
(crontab -l ; echo "30 2 */3 * * cd /home/domain && ./domain_expiry_reminder.sh >/dev/null 2>&1") | crontab -
- 时间:每3天的凌晨2:30执行。
- 命令:进入
/home/domain
目录并执行domain_expiry_reminder.sh
脚本,将标准输出和错误输出重定向到/dev/null
。
每日报告任务:
(crontab -l ; echo "0 14 * * * cd /home/domain && ./daily_report.sh >/dev/null 2>&1") | crontab -
- 时间:每天下午2点执行。
- 命令:进入
/home/domain
目录并执行daily_report.sh
脚本,将标准输出和错误输出重定向到/dev/null
。
SSL证书检查任务:
(crontab -l ; echo "10 3 * * * cd /home/domain && ./check_ssl.sh >/dev/null 2>&1") | crontab -
- 时间:每天凌晨3:10执行。
- 命令:进入
/home/domain
目录并执行check_ssl.sh
脚本,将标准输出和错误输出重定向到/dev/null
。
服务器监控任务:
(crontab -l ; echo "*/2 * * * * cd /home/domain && ./monitor_server.sh >/dev/null 2>&1") | crontab -
- 时间:每2分钟执行一次。
- 命令:进入
/home/domain
目录并执行monitor_server.sh
脚本,将标准输出和错误输出重定向到/dev/null
。
这些命令通过将当前的 crontab
内容与新的任务行合并,然后将结果重新写入 crontab
,从而实现向 crontab
添加新的定时任务。