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

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.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다