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_step() { echo -e "${BLUE}[STEP]${NC} $1"; }
|
||||||
log_dry() { echo -e "${YELLOW}[DRY-RUN]${NC} $1"; }
|
log_dry() { echo -e "${YELLOW}[DRY-RUN]${NC} $1"; }
|
||||||
|
|
||||||
|
# 默认超时(秒)
|
||||||
|
: "${DEPLOY_TIMEOUT_SEC:=400}"
|
||||||
|
|
||||||
# ---------- Git 信息 ----------
|
# ---------- Git 信息 ----------
|
||||||
get_git_info() {
|
get_git_info() {
|
||||||
local b=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown")
|
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() {
|
ssh_connect() {
|
||||||
[ "$DRY_RUN" = true ] && { log_dry "ssh -o ControlMaster=auto -o ControlPath=$(get_ssh_socket) ${REMOTE_USER}@${REMOTE_HOST}"; return 0; }
|
[ "$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)
|
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
|
-o "ControlMaster=no" "${REMOTE_USER}@${REMOTE_HOST}" "echo ok" &>/dev/null; then
|
||||||
log_info "建立 SSH 连接..."
|
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 \
|
-o ConnectionAttempts=3 -o ConnectTimeout=10 \
|
||||||
-N "${REMOTE_USER}@${REMOTE_HOST}" &
|
-N "${REMOTE_USER}@${REMOTE_HOST}" &
|
||||||
sleep 2
|
sleep 2
|
||||||
@@ -41,7 +45,7 @@ ssh_disconnect() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# SSH 快捷执行(复用 ControlMaster)
|
# 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"; }
|
get_deploy_log() { echo "${REMOTE_DIR}/deploy.log"; }
|
||||||
|
|||||||
Reference in New Issue
Block a user