#!/usr/bin/env bash # macmini 컨테이너 관리 도우미 # deploy/macmini.sh status | logs | restart | stop | password(처음 만든 교수자 계정) # deploy/macmini.sh feedback [--all] # 오류 신고 목록 (server.cli) # deploy/macmini.sh cli show 12 # server.cli 명령 그대로 실행 # deploy/macmini.sh backup # DB를 로컬 backups/ 로 내려받기 set -euo pipefail SSH_HOST="${SSH_HOST:-macmini}" NAME="nursing-atlas" C=/usr/local/bin/container REMOTE_DIR="${REMOTE_DIR:-\$HOME/Community_Nursing_Atlas}" cmd="${1:-status}"; shift || true case "$cmd" in status) ssh "$SSH_HOST" "$C list --all | grep -E 'ID|$NAME'; curl -fsS -o /dev/null -w 'HTTP %{http_code}\n' http://127.0.0.1:\${PORT:-8088}/ || true" ;; logs) ssh "$SSH_HOST" "$C logs $NAME | tail -n ${1:-100}" ;; restart) ssh "$SSH_HOST" "$C stop $NAME; $C start $NAME" ;; stop) ssh "$SSH_HOST" "$C stop $NAME" ;; password) ssh "$SSH_HOST" "$C logs $NAME | grep -a '교수자 계정' | tail -1; echo '(비밀번호를 바꿨다면 관리 → 설정의 값이 우선합니다)'" ;; feedback) ssh "$SSH_HOST" "$C exec $NAME python -m server.cli feedback $*" ;; cli) ssh "$SSH_HOST" "$C exec $NAME python -m server.cli $(printf '%q ' "$@")" ;; backup) ts=$(date +%Y%m%d-%H%M%S); mkdir -p backups ssh "$SSH_HOST" "$C exec $NAME python -c \"import sqlite3; s=sqlite3.connect('/app/data/atlas.db'); d=sqlite3.connect('/app/data/backup.db'); s.backup(d); d.close()\"" ssh "$SSH_HOST" "cat $REMOTE_DIR/data/backup.db && rm $REMOTE_DIR/data/backup.db" > "backups/atlas-$ts.db" && echo "backups/atlas-$ts.db" ;; *) echo "사용법: $0 {status|logs|restart|stop|password|feedback|cli|backup}"; exit 1 ;; esac