← 전체 목록
우분투

주기적으로 현재 IP 주소를 확인하고 이전 IP와 비교하여 변경이 감지....

작성일: 2024-12-01 · 원본 자료

Bash 스크립트를 작성한 예제입니다. 이 스크립트는 주기적으로 현재 IP 주소를 확인하고 이전 IP와 비교하여 변경이 감지되면 이메일로 알림을 보냅니다.

1. 스크립트 내용 (notify_ip_change.sh)

bash
#!/bin/bash # 설정 LOG_FILE="/var/log/ip_change.log" IP_FILE="/tmp/current_ip.txt" CHECK_INTERVAL=300 # 체크 간격 (초 단위) SMTP_SERVER="smtp.example.com" # SMTP 서버 주소 SMTP_PORT=587 # SMTP 포트 EMAIL_FROM="your_email@example.com" # 발신 이메일 EMAIL_TO="target_email@example.com" # 수신 이메일 EMAIL_USER="your_email@example.com" # 이메일 사용자명 EMAIL_PASS="your_email_password" # 이메일 비밀번호 # IP 변경 시 이메일 보내기 함수 send_email() { local new_ip="$1" echo -e "Subject: IP 변경 알림\n\n새로운 IP 주소: $new_ip" | \ curl --url "smtp://${SMTP_SERVER}:${SMTP_PORT}" \ --ssl \ --mail-from "$EMAIL_FROM" \ --mail-rcpt "$EMAIL_TO" \ --upload-file - \ --user "$EMAIL_USER:$EMAIL_PASS" } # 초기 IP 설정 if [[ ! -f "$IP_FILE" ]]; then current_ip=$(curl -s ifconfig.me) echo "$current_ip" > "$IP_FILE" echo "$(date): 초기 IP 주소 설정 - $current_ip" >> "$LOG_FILE" fi # 백그라운드 실행 루프 while true; do new_ip=$(curl -s ifconfig.me) saved_ip=$(cat "$IP_FILE") if [[ "$new_ip" != "$saved_ip" ]]; then echo "$new_ip" > "$IP_FILE" echo "$(date): IP 주소 변경 감지 - $new_ip" >> "$LOG_FILE" send_email "$new_ip" fi sleep "$CHECK_INTERVAL" done

2. 사용 방법

  1. 스크립트 생성 및 권한 부여
    bash
    nano notify_ip_change.sh
    위 코드를 붙여넣고 저장합니다.
    bash
    chmod +x notify_ip_change.sh
  2. 필수 패키지 설치
    bash
    sudo apt update sudo apt install curl
  3. 백그라운드 실행
    bash
    nohup ./notify_ip_change.sh &
  4. 로그 확인
    bash
    tail -f /var/log/ip_change.log
  5. 스크립트 종료 프로세스를 종료하려면 다음을 실행합니다.
    bash
    pkill -f notify_ip_change.sh

3. 추가 참고

  • curl을 사용하여 SMTP 서버를 통해 이메일을 보냅니다. 외부 POP3/SMTP 정보를 올바르게 설정하세요.
  • 이메일 비밀번호는 보안 문제로 인해 암호화된 파일이나 환경 변수로 관리하는 것이 좋습니다. 필요 시 알려주세요.
  • IP 확인 API (ifconfig.me)를 변경할 수도 있습니다. 예: ipinfo.io/ip 또는 api64.ipify.org.