eibwm-server

externe IP-Adresse bei Wechsel mailen


Was tut er?

Sendet bei Änderung die neue externe IP-Adresse per E-Mail.

Wie tut er es?

Ein Bash-Skript läuft alle 15 Minuten per Cronjob in einem Alpine-LXC-Container.
Es prüft die externe IP über ifconfig.me, speichert sie in eine .txt Datei und vergleicht sie mit der letzten.
Bei Änderung erfolgt der Versand per sendmail / ssmtp.

ssmtp

per „apk add ssmtp“ installieren
config file anpassen unter „/etc/ssmtp/ssmtp.conf“

root=asdf@asdf.ch
mailhub=mail.provider.com:465
AuthUser=asdf@asdf.ch
AuthPass=asdf
UseTLS=YES
FromLineOverride=YES
  • root: E-Mail-Adresse, an die System-Mails (z.B. von root) weitergeleitet werden
  • mailhub: SMTP-Server-Adresse mit Port (465 = SMTPS, verschlüsselt)
  • AuthUser: Benutzername für die SMTP-Authentifizierung
  • AuthPass: Passwort für die SMTP-Authentifizierung
  • UseTLS: Aktiviert TLS/SSL-Verschlüsselung
  • FromLineOverride: Erlaubt das Überschreiben der Absenderadresse beim Senden

Script

#!/bin/bash

# Pfad zur Datei, in der die letzte IP-Adresse gespeichert wird
IP_FILE="/home/ipchange/last_ip.txt"
# E-Mail-Empfänger
EMAIL_RECIPIENT="asdf@asdf.ch"
# Absender-E-Mail
EMAIL_SENDER="asdf@asdf.ch"

# Aktuelle externe IP-Adresse abfragen
CURRENT_IP=$(curl -s ifconfig.me)

# Prüfen, ob die Datei mit der letzten IP existiert
if [ -f "$IP_FILE" ]; then
    LAST_IP=$(cat "$IP_FILE")
else
    LAST_IP=""
fi

# Vergleich der IP-Adressen
if [ "$CURRENT_IP" != "$LAST_IP" ]; then
    echo "IP-Adresse hat sich geändert:"
    echo "Alte IP: $LAST_IP"
    echo "Neue IP: $CURRENT_IP"

    # E-Mail-Inhalt erstellen (mit Headern)
    (
        echo "To: $EMAIL_RECIPIENT"
        echo "From: $EMAIL_SENDER"
        echo "Subject: Externe IP-Adresse hat sich geändert"
        echo ""
        echo "Die externe IP-Adresse hat sich geändert."
        echo ""
        echo "Alte IP: $LAST_IP"
        echo "Neue IP: $CURRENT_IP"
    ) | sendmail "$EMAIL_RECIPIENT"

    # Neue IP-Adresse speichern
    echo "$CURRENT_IP" > "$IP_FILE"
else
    echo "IP-Adresse unverändert: $CURRENT_IP"
fi

Script ausführbar machen (chmod +x)

Script in cronjob legen

crontab -e

*/5 * * * * /pfad/tollesscript.sh

(für alle 5min)

0 * * * * /pfad/tollesscript.sh

(jede stunde)