stspringer

send email if External IP Has Changed

Feb 15th, 2016 (edited)
350
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # === Config ===
  4. EMAIL="youremail"
  5. IP_FILE="$HOME/.last_public_ip"
  6. IP_CHECK_URL="https://api.ipify.org"
  7. LOGFILE="$HOME/ip_check.log"
  8.  
  9. # === Ensure msmtp and expressvpn are installed ===
  10. command -v msmtp >/dev/null 2>&1 || { echo "❌ msmtp not found. Exiting."; exit 1; }
  11. command -v expressvpn >/dev/null 2>&1 || { echo "❌ expressvpn not found. Exiting."; exit 1; }
  12.  
  13. # === Optional: Check if VPN is active ===
  14. VPN_STATUS=$(expressvpn status)
  15. echo "🔒 VPN status: $VPN_STATUS" >> "$LOGFILE"
  16.  
  17. if echo "$VPN_STATUS" | grep -q "Connected"; then
  18. echo "📴 Disconnecting ExpressVPN to fetch real IP..." >> "$LOGFILE"
  19. expressvpn disconnect
  20. sleep 5
  21. fi
  22.  
  23. # === Get current real public IP ===
  24. CURRENT_IP=$(curl -s "$IP_CHECK_URL" | tr -d '[:space:]')
  25. [ -z "$CURRENT_IP" ] && echo "❌ Error: Could not retrieve IP." >> "$LOGFILE" && exit 1
  26.  
  27. # === Reconnect VPN ===
  28. echo "🔄 Reconnecting ExpressVPN..." >> "$LOGFILE"
  29. expressvpn connect
  30. sleep 5
  31.  
  32. # === Load last known IP ===
  33. [ -f "$IP_FILE" ] && LAST_IP=$(tr -d '[:space:]' < "$IP_FILE") || LAST_IP=""
  34.  
  35. # === Debug Output ===
  36. echo "📡 Current IP: [$CURRENT_IP] | Last IP: [$LAST_IP]" >> "$LOGFILE"
  37.  
  38. # === Compare and act ===
  39. if [ "$CURRENT_IP" != "$LAST_IP" ]; then
  40. printf "%s\n" "$CURRENT_IP" > "$IP_FILE"
  41. HOSTNAME=$(hostname)
  42. TIMESTAMP=$(date)
  43.  
  44. echo -e "From: $EMAIL\nTo: $EMAIL\nSubject: [${HOSTNAME}] Public IP Changed to $CURRENT_IP\n\nDate: $TIMESTAMP\nHostname: $HOSTNAME\nNew Public IP: $CURRENT_IP" | msmtp "$EMAIL"
  45.  
  46. echo "✅ IP changed to $CURRENT_IP. Email sent. [$TIMESTAMP]" >> "$LOGFILE"
  47. else
  48. echo "â„šī¸ IP unchanged. No email sent. [$TIMESTAMP]" >> "$LOGFILE"
  49. fi
Advertisement
Add Comment
Please, Sign In to add comment