#!/bin/bash logfile=/root/logs/dyndns.log log_identifier="[DNS]" log() { echo -e $@ | ts "[%Y-%m-%d %H:%M:%S] $log_identifier" >> $logfile } log_echo() { echo -e $@ | ts "[%Y-%m-%d %H:%M:%S] $log_identifier" | tee -a $logfile } set -o allexport source /root/scripts/.dyndns_env set +o allexport url="https://${USERNAME}:${PASSWORD}@infomaniak.com/nic/update?hostname=" log "Updating DynDNS for ${MAIN_DOMAIN}" response=$(curl -s -f "${url}${MAIN_DOMAIN}") if [[ $? -ne 0 ]]; then log_echo "[ERROR] ${MAIN_DOMAIN} DynDNS Request Failed!" exit 1 fi log "Response: ${response}" if [[ "$response" =~ ^nochg ]]; then # IP has not changed # log_echo "IP has not changed, is still $(echo $response | awk '{print $2}')" exit 0 elif [[ "$response" =~ ^good ]]; then # IP has changed log_echo "IP HAS CHANGED TO $(echo $response | awk '{print $2}')" log_echo "${MAIN_DOMAIN} was updated successfully" domains_error=0 for $domain in $ADDITIONAL_DOMAINS do log "Updating DynDNS for ${domain}" additional_response=$(curl -s -f "${url}mneun.ch") if [[ $? -ne 0 ]]; then log_echo "[ERROR] ${domain} DynDNS Request Failed!" exit 1 fi log "${domain} response: ${additional_response}" if [[ "$additional_response" =~ ^good ]]; then # Change succeeded log_echo "${domain} was updated successfully" elif [[ "$additional_response" =~ ^nochg ]]; then log_echo "${domain} did not change" else log_echo "[ERROR] ${domain} DynDNS request response does not match expectations!" domains_error=1 fi sleep 1 done if [ $domain_error -eq 1 ]; then exit 2 fi else log_echo "[ERROR] ${MAIN_DOMAIN} DynDNS request respone does not match expectations!" exit 2 fi