fix: deploy.sh设置400秒超时+支付代码全面审计
This commit is contained in:
@@ -10,6 +10,9 @@ log_error() { echo -e "${RED}[ERROR]${NC} $1" >&2; }
|
||||
log_step() { echo -e "${BLUE}[STEP]${NC} $1"; }
|
||||
log_dry() { echo -e "${YELLOW}[DRY-RUN]${NC} $1"; }
|
||||
|
||||
# 默认超时(秒)
|
||||
: "${DEPLOY_TIMEOUT_SEC:=400}"
|
||||
|
||||
# ---------- Git 信息 ----------
|
||||
get_git_info() {
|
||||
local b=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown")
|
||||
@@ -23,10 +26,11 @@ get_ssh_socket() { echo "/tmp/ssh-master-${REMOTE_HOST}-$$"; }
|
||||
ssh_connect() {
|
||||
[ "$DRY_RUN" = true ] && { log_dry "ssh -o ControlMaster=auto -o ControlPath=$(get_ssh_socket) ${REMOTE_USER}@${REMOTE_HOST}"; return 0; }
|
||||
local socket; socket=$(get_ssh_socket)
|
||||
if ! ssh -o "ControlPath=${socket}" -o "ConnectionAttempts=3" -o "ConnectTimeout=10" \
|
||||
# 测试连接
|
||||
if ! timeout "${DEPLOY_TIMEOUT_SEC}" ssh -o "ControlPath=${socket}" -o "ConnectionAttempts=3" -o "ConnectTimeout=10" \
|
||||
-o "ControlMaster=no" "${REMOTE_USER}@${REMOTE_HOST}" "echo ok" &>/dev/null; then
|
||||
log_info "建立 SSH 连接..."
|
||||
ssh -o ControlMaster=auto -o ControlPath="${socket}" -o ControlPersist=600 \
|
||||
timeout "${DEPLOY_TIMEOUT_SEC}" ssh -o ControlMaster=auto -o ControlPath="${socket}" -o ControlPersist=600 \
|
||||
-o ConnectionAttempts=3 -o ConnectTimeout=10 \
|
||||
-N "${REMOTE_USER}@${REMOTE_HOST}" &
|
||||
sleep 2
|
||||
@@ -41,7 +45,7 @@ ssh_disconnect() {
|
||||
}
|
||||
|
||||
# SSH 快捷执行(复用 ControlMaster)
|
||||
remote() { ssh -o "ControlPath=$(get_ssh_socket)" "${REMOTE_USER}@${REMOTE_HOST}" "$@"; }
|
||||
remote() { timeout "${DEPLOY_TIMEOUT_SEC}" ssh -o "ConnectTimeout=10" -o "ServerAliveInterval=30" -o "ControlPath=$(get_ssh_socket)" "${REMOTE_USER}@${REMOTE_HOST}" "$@"; }
|
||||
|
||||
# ---------- 部署日志 ----------
|
||||
get_deploy_log() { echo "${REMOTE_DIR}/deploy.log"; }
|
||||
|
||||
Reference in New Issue
Block a user