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

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

相关推荐
whale fall4 小时前
git add、git commit、git push 的区别和联系
git
倾云鹤4 小时前
Git同时推送多个远程仓库
git
sdm0704278 小时前
基础开发工具git,gdb
git
胡琦博客10 小时前
如何同步远程分支到本地(远程有些分支已经删除了)
git
AI成长日志14 小时前
【实用工具教程】Git进阶:分支策略与合并冲突解决
git
ruanCat14 小时前
加了 .gitattributes 就万事大吉?我差点毁了整个团队的 Git 工作流
git
咋吃都不胖lyh15 小时前
查看 Git 本地仓库关联的远程仓库链接(URL)
git
wheelmouse778815 小时前
AI 时代的 Git 进阶术:如何优雅地让多个 Agent 并行开发
人工智能·git·ai编程
@Ma16 小时前
企业微信智能机器人 Python 插件获取回调和发送消息支持文字图片语音视频
python·机器人·企业微信
vx-bot55566617 小时前
企业微信ipad协议的防封号技术体系与策略实践
服务器·企业微信·ipad