보조지표 전략체크 수정
This commit is contained in:
Executable
+111
@@ -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 "$@"
|
||||
Reference in New Issue
Block a user