微信群机器人-备份文件发送通知

#!/bin/bash

配置文件路径(与企业微信配置分离)

CONFIG_FILE="(dirname "0")/git_pull_config.env"

加载配置文件

if [ -f "$CONFIG_FILE" ]; then

source "$CONFIG_FILE"

else

WX_ROBOT_URL="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxx" # 默认不发送通知

fi

获取脚本所在目录的绝对路径

repos_path="(cd "(dirname "$0")" && pwd)"

初始化统计变量(避免子 Shell 作用域问题)

declare -i total_repos=0 success_count=0 error_count=0

declare -a error_messages=()

关键修复:使用进程替换避免子 Shell 变量丢失

while IFS= read -r gitdir; do

((total_repos++))

project_dir=(dirname "gitdir")

echo -e "\n[ START ] 同步仓库: $project_dir"

执行 git pull 并捕获输出

exec_output=(cd "project_dir" && git pull 2>&1)

exec_status=$?

记录执行结果

if [ $exec_status -eq 0 ]; then

((success_count++))

else

((error_count++))

error_messages+=("【失败】project_dir\\n\{exec_output}</pre>")

fi

done < <(find "$repos_path" -type d -name .git) # 使用进程替换

构建企业微信通知内容

build_notification() {

local status_icon="✅"

$error_count -gt 0 \] \&\& status_icon="⚠️" cat \<\ \*\*同步时间\*\*: $(date "+%Y-%m-%d %H:%M:%S") \> \*\*扫描目录\*\*: \\\`${repos_path}\\\` \> \*\*仓库总数\*\*: ${total_repos} \> \*\*成功数量\*\*: ${success_count} \> \*\*失败数量\*\*: ${error_count} EOF \[ $error_count -gt 0 \] \&\& echo -e "\\n\*\*失败详情\*\*:\\n${error_messages\[@\]//$'\\n'/\\\\n}" } # 发送企业微信通知(支持 Markdown) send_wx_notification() { local content=$(build_notification \| jq -Rs .) local json_payload=$(cat \<\

相关推荐
ccLianLian21 小时前
计算机基础·Git版本控制
git
正在走向自律1 天前
企业微信消息推送全链路实战:Java后端与Vue前端集成指南
前端·vue.js·企业微信·企业微信消息推送·官方企业微信
爱写代码的liding1 天前
git 常用命令
大数据·git·elasticsearch
弥巷1 天前
【Git】Git的配置与使用(非常详细)
git·github
vortex51 天前
Bash One-Liners 学习精要指南
开发语言·chrome·bash
摇滚侠1 天前
零基础小白自学Git_Github教程,仓库的其它功能-项目管理,笔记09
笔记·git·github
蒋士峰DBA修行之路1 天前
红帽练习环境介绍
linux·开发语言·bash
小生不才yz1 天前
(三)分支与标签 - git tag 命令的使用
git
摇滚侠1 天前
零基础小白自学 Git_Github 教程,DeskTop 进阶操作,笔记12
笔记·git·github
量子炒饭大师1 天前
【一天一个计算机知识】—— 【编程百度】悬空指针
c语言·数据结构·c++·git·安全·github·dubbo