On 6/27/23 11:04, Neil Bothwick wrote:
On Tue, 27 Jun 2023 10:34:22 -0600, [email protected] wrote:

I run this little script to notify me when the IP changes.  However at
time to time the file: "old_ip.txt" is being populated with an empty
line "no IP address"

What could be causing it?


#!/bin/bash

# Replace "YOUR_EMAIL" with your actual email address
EMAIL="[email protected]"

# File to store the old IP address
IP_FILE="/home/fd/business/scripts/old_ip.txt"

# Read the old IP address from the file
OLD_IP=$(cat "$IP_FILE")

# Function to retrieve the IP address
get_ip_address() {
      local ip_address
      ip_address=$(curl -s https://ifconfig.me/ip)
      echo "$ip_address"
}

# Query the API to get the current IP address
NEW_IP=$(curl -s https://api.ipify.org)

I found this site very slow to respond. It could be timing out with an
empty result. OTOH the URL used in the get_ip_address function is rapid,
but you don't call that function.


sleep 2

Yes, I notice it, it take upwards 10sec to get an IP and sometimes I get a timeout, I 
increases "sleep 15" hopefully it will help.


# Compare the new IP address with the old one
if [[ "$NEW_IP" != "$OLD_IP" ]]; then
      echo "Your IP address has changed to $NEW_IP"

      # Send an email notification
      echo "New IP address: $NEW_IP" | mailto -s "IP address change"
$EMAIL

      # Allow overwriting of the file
      set +o noclobber

      # Update the old IP address in the file
#     printf "%s" "$NEW_IP" > "$IP_FILE"
       echo -n "$NEW_IP" > "$IP_FILE"

      # Restore the noclobber option
      set -o noclobber

You don't need to play with the noclobber option, just use >| for
redirection, which will always overwrite the file.


Thanks for the pointer.

else
      echo "Your IP address is still $OLD_IP"
fi

Reply via email to