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

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

相关推荐
爱学英语的程序员1 小时前
Git 提交 LF will be replaced by CRLF the next time Git touches it 报错
git
qq_339191142 小时前
服务器git pull每次都要输入密码,linux 设置git登录,linux设置git只输入一次账户密码
git
A_QXBlms6 小时前
企微多账号自动化运营——消息规则与群发实战
自动化·企业微信·rxjava
一颗小行星!8 小时前
快速理解 Git submodule
git
坏小虎8 小时前
~/.zshrc 和 ~/.bash_profile 详细介绍与区别
开发语言·bash
想唱rap9 小时前
计算机网络基础
linux·计算机网络·mysql·ubuntu·bash
A_QXBlms10 小时前
企微多账号管理的踩坑经验与最佳实践
企业微信
A-Jie-Y10 小时前
Git基础-核心概念与常用命令
git
夜珀10 小时前
Git基础修炼手册:在AtomGit上玩转版本控制
git
bingyan037111 小时前
openclaw-连接企业微信
企业微信·openclaw