123 lines
4.9 KiB
Bash
Executable File
123 lines
4.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# ─────────────────────────────────────────────
|
|
# 로또 자동 구매 스케줄러 설정 스크립트
|
|
# 매주 금요일 오전 10시에 자동 실행
|
|
# ─────────────────────────────────────────────
|
|
|
|
echo "=== 로또 자동 구매 스케줄러 설정 ==="
|
|
|
|
# 스크립트 경로 (본인 환경에 맞게 수정)
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
PYTHON_PATH=$(which python3)
|
|
SCRIPT_PATH="${SCRIPT_DIR}/lotto_auto_buy.py"
|
|
|
|
echo "Python 경로: ${PYTHON_PATH}"
|
|
echo "스크립트 경로: ${SCRIPT_PATH}"
|
|
|
|
# ─────────────────────────────────────────────
|
|
# 방법 1: crontab 등록 (Linux / macOS)
|
|
# ─────────────────────────────────────────────
|
|
setup_cron() {
|
|
echo ""
|
|
echo "[방법 1] crontab에 등록합니다..."
|
|
|
|
# 환경변수 설정 포함 cron 항목 생성
|
|
CRON_ENTRY="0 10 * * 5 cd ${SCRIPT_DIR} && LOTTO_USER_ID=\${LOTTO_USER_ID} LOTTO_USER_PW=\${LOTTO_USER_PW} ${PYTHON_PATH} ${SCRIPT_PATH} >> ${SCRIPT_DIR}/cron_output.log 2>&1"
|
|
|
|
# 기존 crontab에 추가 (중복 방지)
|
|
(crontab -l 2>/dev/null | grep -v "lotto_auto_buy"; echo "${CRON_ENTRY}") | crontab -
|
|
|
|
echo "crontab 등록 완료!"
|
|
echo "등록된 cron 항목:"
|
|
crontab -l | grep "lotto_auto_buy"
|
|
echo ""
|
|
echo "※ 실행 시간: 매주 금요일 오전 10:00"
|
|
echo "※ cron 형식: 분(0) 시(10) 일(*) 월(*) 요일(5=금)"
|
|
}
|
|
|
|
# ─────────────────────────────────────────────
|
|
# 방법 2: systemd timer (Linux)
|
|
# ─────────────────────────────────────────────
|
|
setup_systemd() {
|
|
echo ""
|
|
echo "[방법 2] systemd timer를 설정합니다..."
|
|
|
|
TIMER_DIR="${HOME}/.config/systemd/user"
|
|
mkdir -p "${TIMER_DIR}"
|
|
|
|
# Service 파일 생성
|
|
cat > "${TIMER_DIR}/lotto-auto-buy.service" << EOF
|
|
[Unit]
|
|
Description=로또 6/45 자동 구매
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
WorkingDirectory=${SCRIPT_DIR}
|
|
Environment="LOTTO_USER_ID=%E{LOTTO_USER_ID}"
|
|
Environment="LOTTO_USER_PW=%E{LOTTO_USER_PW}"
|
|
ExecStart=${PYTHON_PATH} ${SCRIPT_PATH}
|
|
EOF
|
|
|
|
# Timer 파일 생성
|
|
cat > "${TIMER_DIR}/lotto-auto-buy.timer" << EOF
|
|
[Unit]
|
|
Description=매주 금요일 로또 자동 구매 타이머
|
|
|
|
[Timer]
|
|
OnCalendar=Fri *-*-* 10:00:00
|
|
Persistent=true
|
|
|
|
[Install]
|
|
WantedBy=timers.target
|
|
EOF
|
|
|
|
# 활성화
|
|
systemctl --user daemon-reload
|
|
systemctl --user enable lotto-auto-buy.timer
|
|
systemctl --user start lotto-auto-buy.timer
|
|
|
|
echo "systemd timer 등록 완료!"
|
|
echo "상태 확인: systemctl --user status lotto-auto-buy.timer"
|
|
}
|
|
|
|
# ─────────────────────────────────────────────
|
|
# 메뉴
|
|
# ─────────────────────────────────────────────
|
|
echo ""
|
|
echo "스케줄러 방식을 선택하세요:"
|
|
echo " 1) crontab (간단, Linux/macOS 공통)"
|
|
echo " 2) systemd timer (Linux, 더 안정적)"
|
|
echo " 3) 설정하지 않음"
|
|
echo ""
|
|
read -p "선택 (1/2/3): " choice
|
|
|
|
case $choice in
|
|
1) setup_cron ;;
|
|
2) setup_systemd ;;
|
|
3) echo "스케줄러를 설정하지 않았습니다." ;;
|
|
*) echo "잘못된 입력입니다." ;;
|
|
esac
|
|
|
|
echo ""
|
|
echo "─────────────────────────────────────────────"
|
|
echo "※ 중요: 환경변수를 먼저 설정하세요!"
|
|
echo ""
|
|
echo " export LOTTO_USER_ID='동행복권_아이디'"
|
|
echo " export LOTTO_USER_PW='동행복권_비밀번호'"
|
|
echo ""
|
|
echo " 또는 lotto_auto_buy.py 내 CONFIG를 직접 수정"
|
|
echo "─────────────────────────────────────────────"
|
|
|
|
# ─────────────────────────────────────────────
|
|
# Windows 사용자를 위한 안내
|
|
# ─────────────────────────────────────────────
|
|
echo ""
|
|
echo "※ Windows 사용자:"
|
|
echo " 작업 스케줄러(Task Scheduler)에서 아래와 같이 등록하세요."
|
|
echo " 1) 작업 스케줄러 열기 (taskschd.msc)"
|
|
echo " 2) '기본 작업 만들기' 클릭"
|
|
echo " 3) 트리거: 매주 → 금요일 선택 → 시간: 오전 10:00"
|
|
echo " 4) 동작: 프로그램 시작"
|
|
echo " 프로그램: python"
|
|
echo " 인수: ${SCRIPT_PATH}"
|
|
echo " 시작 위치: ${SCRIPT_DIR}" |