fix: deploy-proxy.sh SMTP凭据写入使用grep+printf替代sed,避免密码特殊字符问题

Agent-Logs-Url: https://github.com/qinfendebingshuo/guanghulab/sessions/f9b09d73-b949-4f02-b3b9-2e69f90cd8b6

Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2026-04-04 09:07:17 +00:00 committed by GitHub
parent faf2f28c7c
commit d3965af623
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 7 additions and 5 deletions

View File

@ -86,22 +86,24 @@ save_server_host() {
fi
# 保存SMTP凭据 (如果有) — 使守护Agent和流量监控可发送告警邮件
# 注: 使用删除+追加方式避免sed特殊字符问题 (密码常含|&/$等)
if [ -n "${ZY_SMTP_USER:-}" ] && [ -f "$KEYS_FILE" ]; then
if grep -q "^ZY_SMTP_USER=" "$KEYS_FILE" 2>/dev/null; then
sed -i "s|^ZY_SMTP_USER=.*|ZY_SMTP_USER=${ZY_SMTP_USER}|" "$KEYS_FILE"
grep -v "^ZY_SMTP_USER=" "$KEYS_FILE" > "${KEYS_FILE}.tmp" && mv "${KEYS_FILE}.tmp" "$KEYS_FILE"
else
echo "" >> "$KEYS_FILE"
echo "# SMTP凭据 (部署时自动写入·守护Agent告警用)" >> "$KEYS_FILE"
echo "ZY_SMTP_USER=${ZY_SMTP_USER}" >> "$KEYS_FILE"
fi
printf '%s\n' "ZY_SMTP_USER=${ZY_SMTP_USER}" >> "$KEYS_FILE"
chmod 600 "$KEYS_FILE"
echo " ✅ ZY_SMTP_USER 已保存到 .env.keys"
fi
if [ -n "${ZY_SMTP_PASS:-}" ] && [ -f "$KEYS_FILE" ]; then
if grep -q "^ZY_SMTP_PASS=" "$KEYS_FILE" 2>/dev/null; then
sed -i "s|^ZY_SMTP_PASS=.*|ZY_SMTP_PASS=${ZY_SMTP_PASS}|" "$KEYS_FILE"
else
echo "ZY_SMTP_PASS=${ZY_SMTP_PASS}" >> "$KEYS_FILE"
grep -v "^ZY_SMTP_PASS=" "$KEYS_FILE" > "${KEYS_FILE}.tmp" && mv "${KEYS_FILE}.tmp" "$KEYS_FILE"
fi
printf '%s\n' "ZY_SMTP_PASS=${ZY_SMTP_PASS}" >> "$KEYS_FILE"
chmod 600 "$KEYS_FILE"
echo " ✅ ZY_SMTP_PASS 已保存到 .env.keys"
fi
}