DynDNS Updater (Debian / 10.07.2024)
Der DynDNS Updater aktualisiert eine Domain mit der aktuellen IP-Adresse.
Script:
user=$(whoami)
data="/home/$user/script-data/$(basename "$0")"
ippage="icanhazip.com"
if [ ! -d "$data" ]; then
mkdir -p "$data"
fi
if [ ! -d "$data/logs" ]; then
mkdir "$data/logs"
fi
function ipcheck {
echo "$(date +"[%d.%m.%Y %H:%M:%S]")"
if [ -f "$data/ip.txt" ]; then
ip=$(head -n1 "$data/ip.txt")
echo "Bisherige IP: $ip"
else
echo "Erste Ausführung."
ip=""
echo "$(date +"%d.%m.%Y;%H:%M:%S");Erste Ausführung;$1" >> "$data/logs/allgemein.csv"
fi
if [ -f "$data/updateurl.txt" ]; then
updateurl=$(sed 's/ //g' "$data/updateurl.txt" | head -n1 | tail -n1)
else
echo "Keine Update-URL hinterlegt. URL hier einfügen:"
echo "$(date +"%d.%m.%Y;%H:%M:%S");Update-URL fehlt" >> "$data/logs/allgemein.csv"
read -p "Update-URL: " updateurl
# Überprüfe, ob die URL mit "http://" oder "https://" beginnt
if [[ "$updateurl" =~ ^(http|https):// ]]; then
echo "URL OK."
echo "$updateurl" > "$data/updateurl.txt"
echo "$(date +"%d.%m.%Y;%H:%M:%S");Update-URL hinterlegt;$1" >> "$data/logs/allgemein.csv"
else
echo "Die URL ist ungültig."
echo "$(date +"%d.%m.%Y;%H:%M:%S");Update-URL ungültig;$1" >> "$data/logs/allgemein.csv"
exit 1
fi
fi
echo "Prüfe Online-Status"
if ping -4 -c 1 -W 3 "$ippage" >/dev/null 2>&1; then
echo "Anschluss Online"
ipneu=$(curl -s "$ippage")
echo "IP: $ipneu"
if [ "$ip" = "$ipneu" ]; then
echo "IP unverändert."
# echo "$(date +"%d.%m.%Y;%H:%M:%S");IP unverändert;$1" >> "$data/logs/$(date +"%Y%m%d").csv"
else
echo "Bisherige IP: $ip"
echo "Neue IP : $ipneu"
echo "Aktualisiere..."
echo "$ipneu" > "$data/ip.txt"
curl -sSL "$updateurl" >/dev/null
echo "OK."
echo "$(date +"%d.%m.%Y;%H:%M:%S");Aktualisiert auf $ipneu;$1" >> "$data/logs/$(date +"%Y%m%d").csv"
echo "$(date +"[%d.%m.%Y %H:%M:%S]") IP aktualisiert auf $ipneu" | mail -s "DynDNSupdater" "mail@mariobeh.de"
fi
else
echo "Client ist selbst offline, kein Aktualisieren möglich."
echo "$(date +"%d.%m.%Y;%H:%M:%S");Client offline;$1" >> "$data/logs/$(date +"%Y%m%d").csv"
fi
}
if [ -z "$1" ]; then
ipcheck
fi
exit 0