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

#!/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 <<EOF

**Git 同步完成通知** ${status_icon}

> **同步时间**: $(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 <<EOF

{

"msgtype": "markdown",

"markdown": {

"content": ${content}

}

}

EOF

)

curl -sSL \

-H "Content-Type: application/json" \

-d "${json_payload}" \

"${WX_ROBOT_URL}" | jq -r '.errmsg // "未知错误"'

}

执行通知(当配置有效时)

if \[ -n "$WX_ROBOT_URL" \&\& "$WX_ROBOT_URL" == \*qyapi.weixin.qq.com\* ]; then

echo -e "\n🔄 正在发送企业微信通知..."

result=$(send_wx_notification)

"$result" == "ok" && echo "✅ 通知发送成功" || echo "❌ 通知发送失败: $result"

else

echo -e "\n⚠️ 未配置有效企业微信机器人,跳过通知"

fi

echo -e "\n🏁 所有操作已完成"

相关推荐
恋喵大鲤鱼10 小时前
git mv
git·git mv
tianxiaxue110 小时前
企微如何使用AI生成推荐话术?
人工智能·企业微信
梦想的旅途212 小时前
企业微信API实现外部群消息异步推送的技术架构与实践
mysql·架构·企业微信
Patrick_Wilson14 小时前
Git Worktree 原理详解:从 objects / refs 看懂多分支并行与多 Agent 协作
git·面试·ai编程
yaoxiaoganggang14 小时前
克隆 Superpowers 的规则库到你的本地(或者直接作为 Git Submodule)
人工智能·经验分享·git·ai编程
Python私教16 小时前
用 Claude Code 做大型重构不翻车:分批+Git 兜底+验证闭环的实战流程(2026)
git·重构·ai编程·代码重构·工程实践·claude code
天空属于哈夫克317 小时前
企微 RPA 接口开放:无需官方权限,外部群自由操作
自动化·企业微信·api
Shawn Dev17 小时前
团队协作中的 Git Tag 最佳实践:从入门到精通
大数据·git·elasticsearch
独隅19 小时前
Git/GitHub/GitLab/Gitee 核心对比指南
git·gitlab·github
2501_9419820519 小时前
基于自动化控制架构的企业微信群消息管理系统设计
架构·自动化·企业微信