보조지표 전략체크 수정

This commit is contained in:
Macbook
2026-06-17 21:49:15 +09:00
parent 1698dd9c8e
commit 3c269db6b7
7 changed files with 300 additions and 40 deletions
+111
View File
@@ -0,0 +1,111 @@
#!/usr/bin/env bash
# exdev 서버(Mac Studio) — NAT hairpin 우회용 /etc/hosts 설정
# stock.exdev.co.kr · chatbot.exdev.co.kr → 127.0.0.1 (Caddy 443 / nginx 80)
#
# 사용 (서버 SSH):
# bash scripts/setup-server-local-hosts.sh
# sudo bash scripts/setup-server-local-hosts.sh # 비대화형
#
set -euo pipefail
RED='\033[0;31m'
GREEN='\033[0;32m'
CYAN='\033[0;36m'
NC='\033[0m'
log() { echo -e "${CYAN}[setup-local-hosts]${NC} $*"; }
ok() { echo -e "${GREEN}${NC} $*"; }
fail() { echo -e "${RED}${NC} $*"; exit 1; }
HOSTS_FILE="/etc/hosts"
MARKER="# GoldenChart local (NAT hairpin bypass)"
ENTRIES=(
"127.0.0.1 exdev.co.kr"
"127.0.0.1 stock.exdev.co.kr"
"127.0.0.1 chatbot.exdev.co.kr"
)
apply_hosts() {
local tmp
tmp="$(mktemp)"
cp "$HOSTS_FILE" "$tmp"
# 기존 exdev 관련 항목·마커 제거
grep -vE 'exdev\.co\.kr|GoldenChart local \(NAT hairpin bypass\)' "$tmp" > "${tmp}.clean" || true
mv "${tmp}.clean" "$tmp"
{
cat "$tmp"
echo ""
echo "$MARKER"
for line in "${ENTRIES[@]}"; do
echo "$line"
done
} > "${tmp}.new"
cp "$HOSTS_FILE" "${HOSTS_FILE}.backup.$(date +%Y%m%d_%H%M%S)"
mv "${tmp}.new" "$HOSTS_FILE"
rm -f "$tmp"
}
verify() {
local ok_count=0
for host in exdev.co.kr stock.exdev.co.kr; do
if ping -c1 -t1 "$host" 2>/dev/null | grep -q '127.0.0.1'; then
ok "ping $host → 127.0.0.1"
ok_count=$((ok_count + 1))
elif dscacheutil -q host -a name "$host" 2>/dev/null | grep -q '127.0.0.1'; then
ok "DNS $host → 127.0.0.1"
ok_count=$((ok_count + 1))
else
fail "DNS 확인 실패: $host (127.0.0.1 이 아님)"
fi
done
curl -sf --connect-timeout 8 -o /dev/null -w "" "https://stock.exdev.co.kr/" \
|| fail "https://stock.exdev.co.kr 접속 실패"
ok "https://stock.exdev.co.kr → 200"
curl -sf --connect-timeout 8 -o /dev/null "https://stock.exdev.co.kr/desktop/updates/latest.json" \
|| fail "desktop latest.json HTTPS 실패"
ok "desktop updater latest.json HTTPS OK"
}
main() {
log "서버 로컬 hosts 설정 (NAT hairpin 우회)"
if [[ "${1:-}" == "--as-root" ]]; then
apply_hosts
dscacheutil -flushcache 2>/dev/null || true
killall -HUP mDNSResponder 2>/dev/null || true
verify
ok "설정 완료"
return
fi
if [[ "$(id -u)" -eq 0 ]]; then
apply_hosts
dscacheutil -flushcache 2>/dev/null || true
killall -HUP mDNSResponder 2>/dev/null || true
verify
ok "설정 완료"
return
fi
if [[ -n "${SUDO_ASKPASS:-}" ]] && [[ -x "${SUDO_ASKPASS}" ]]; then
log "SUDO_ASKPASS 사용"
sudo -A bash "$0" --as-root
return
fi
if [[ -t 0 ]]; then
log "관리자 암호 필요 (sudo)"
sudo bash "$0" --as-root
return
fi
fail "sudo 권한 필요. 서버 콘솔에서: sudo bash $0"
}
main "$@"