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)