Initial check-in

This commit is contained in:
Duc
2025-03-13 18:48:51 -07:00
parent 710bb9e8a1
commit 7691e78112

104
IP_Notifier/ip_notifier.sh Normal file
View File

@@ -0,0 +1,104 @@
#!/bin/bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
DUCDEV_LOG_FILEPATH=${SCRIPT_DIR}/ducdev.txt
IP_LOG_FILEPATH=${SCRIPT_DIR}/ip.txt
EMAIL_FILEPATH=${SCRIPT_DIR}/email.txt
LOG_FILEPATH=${SCRIPT_DIR}/log.txt
ALIVE_LOG_FILEPATH=${SCRIPT_DIR}/am_i_alive.txt
EMAIL_TO=dkle99@yahoo.com
EMAIL_FROM=noreply@noreply.com
echo -e "`date`\n" > ${LOG_FILEPATH}
# In order to use the "dig" command, need to install DNS Server package from the Synology Package Center
CURRENT_WAN_IP4=$(/var/packages/DNSServer/target/bin/dig @resolver4.opendns.com myip.opendns.com +short)
while [ "${CURRENT_WAN_IP4}" == "" ]; do
echo -e "`date` - Unable to obtain extern IP." >> ${LOG_FILEPATH}
sleep 3600
CURRENT_WAN_IP4=$(/var/packages/DNSServer/target/bin/dig @resolver4.opendns.com myip.opendns.com +short)
done
echo "Current IP: ${CURRENT_WAN_IP4}"
if [ ! -f "${IP_LOG_FILEPATH}" ]; then
echo "${CURRENT_WAN_IP4}" |& tee ${IP_LOG_FILEPATH}
SAVED_WAN_IP4=${CURRENT_WAN_IP4}
else
SAVED_WAN_IP4=$(head -n 1 ${IP_LOG_FILEPATH})
echo "Saved IP: ${SAVED_WAN_IP4}"
fi
while true; do
echo "Last updated on `date` " > ${ALIVE_LOG_FILEPATH}
if [[ "${CURRENT_WAN_IP4}" != "${SAVED_WAN_IP4}" ]]; then
echo "IP has changed"
echo "${CURRENT_WAN_IP4}" |& tee ${IP_LOG_FILEPATH}
echo "To: ${EMAIL_TO} " > ${EMAIL_FILEPATH}
echo "From: ${EMAIL_FROM} " >> ${EMAIL_FILEPATH}
echo "Subject: IP Changed ${CURRENT_WAN_IP4}" >> ${EMAIL_FILEPATH}
echo -e "\nThe old IP was ${SAVED_WAN_IP4}\nDate changed: `date`\n" >> ${EMAIL_FILEPATH}
email_response=$(ssmtp ${EMAIL_TO} < ${EMAIL_FILEPATH} 2>&1)
if [[ "$email_response" == "" ]]; then
echo -e "\nEmail Sent Successfully\n"
else
echo -e "\n\nWARNING -- An error occurred while sending email. The error was: $email_response\n\n"
fi
SAVED_WAN_IP4=${CURRENT_WAN_IP4}
fi
DUCDEV_IP4=$(/var/packages/DNSServer/target/bin/dig ducdev.com +short)
while [ "${DUCDEV_IP4}" == "" ]; do
echo -e "`date` - Unable to obtain DucDev.com IP." >> ${LOG_FILEPATH}
sleep 3600
DUCDEV_IP4=$(/var/packages/DNSServer/target/bin/dig ducdev.com +short)
done
echo "DucDev IP: ${DUCDEV_IP4}"
if [[ "${CURRENT_WAN_IP4}" != "${DUCDEV_IP4}" ]]; then
SEND_EMAIL=false
if [ -f "${DUCDEV_LOG_FILEPATH}" ]; then
SAVED_DATE=$(head -n 1 ${DUCDEV_LOG_FILEPATH})
if [ "${SAVED_DATE}" != "$(date +"%D")" ]; then
SEND_EMAIL=true
fi
else
SEND_EMAIL=true
fi
if [ "${SEND_EMAIL}" = true ]; then
echo "DucDev.com IP does not match home's external IP"
echo "To: ${EMAIL_TO} " > ${EMAIL_FILEPATH}
echo "From: ${EMAIL_FROM} " >> ${EMAIL_FILEPATH}
echo "Subject: IP Changed ${CURRENT_WAN_IP4}" >> ${EMAIL_FILEPATH}
echo -e "\nDucDev.com IP is ${DUCDEV_IP4}\nDate changed: `date`\n" >> ${EMAIL_FILEPATH}
email_response=$(ssmtp ${EMAIL_TO} < ${EMAIL_FILEPATH} 2>&1)
if [[ "$email_response" == "" ]]; then
echo -e "\nEmail Sent Successfully\n"
else
echo -e "\n\nWARNING -- An error occurred while sending email. The error was: $email_response\n\n"
fi
echo "$(date +"%D")" > ${DUCDEV_LOG_FILEPATH}
fi
fi
sleep 3600
CURRENT_WAN_IP4=$(/var/packages/DNSServer/target/bin/dig @resolver4.opendns.com myip.opendns.com +short)
while [ "${CURRENT_WAN_IP4}" == "" ]; do
echo -e "`date` - Unable to obtain extern IP." >> ${LOG_FILEPATH}
sleep 3600
CURRENT_WAN_IP4=$(/var/packages/DNSServer/target/bin/dig @resolver4.opendns.com myip.opendns.com +short)
done
done