基于 Python 脚本与 cron 实现 GitLab Public 项目自动扫描 + 企微 Webhook 通知
在
一、脚本逐行注释
主机:192.168.201.200
脚本 /root/gitlab_check.sh
#!/bin/bash
# 指定使用 bash 解释器执行脚本
# 向第一个 GitLab 实例发起 GET 请求,获取项目列表
# -s 参数表示 "silent",即不显示下载进度等额外信息
result1=$(curl -s --request GET "http://gitlab.fz.akubela.local/api/v4/projects")
# 向第二个 GitLab 实例发起 GET 请求
result2=$(curl -s --request GET "http://192.168.13.5/api/v4/projects")
# 拼接两个结果,作为要发送的文本内容
message="GitLab Projects Results:
1. Local GitLab: $result1
2. 192.168.13.5: $result2"
# 将文本内容包装成企业微信机器人需要的 JSON 格式
# 格式要求:https://developer.work.weixin.qq.com/document/path/91770
json="{\"msgtype\":\"text\",\"text\":{\"content\":\"$message\"}}"
# 使用 curl 将 JSON 通过 POST 请求发送到企业微信机器人 webhook
# -H "Content-Type: application/json" 表示告诉对方数据是 JSON
# -d "$json" 表示请求体是我们准备好的 JSON 数据
curl -s -H "Content-Type: application/json" \
-d "$json" \
"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=f2fe73ee-c56d-42c3-becf-474c956f12a0"
二、什么是 crontab?
- cron:Linux/Unix 系统自带的任务调度服务,可以在指定时间自动执行任务。
- crontab:cron 的配置文件,用来定义任务和时间规则。
你只要把脚本写好,然后通过 crontab -e 添加任务,系统就会按照你设定的时间自动执行。
查看当前用户的任务:
crontab -l
三、crontab 时间格式
crontab 的一行格式:
分 时 日 月 星期 命令
每一项说明:
- 分:0–59
- 时:0–23 (24小时制)
- 日:1–31
- 月:1–12
- 星期:0–7 (0和7都表示星期天)
- 命令:要执行的命令或脚本路径
例子:
0 9 * * * /root/gitlab_check.sh→ 每天上午 9:00 执行30 14 * * * /root/gitlab_check.sh→ 每天 14:30(下午2:30) 执行0 */6 * * * /root/gitlab_check.sh→ 每6小时执行一次(0点、6点、12点、18点)*/10 * * * * /root/gitlab_check.sh→ 每10分钟执行一次
作者
fffff@xf.nn
