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