Eigene externe IP-Adresse speichern (Bash-Skript)

Wegen einem Problem mit meiner DSL-Verbindung wollte ich ein Protokoll über die Häufigkeit der Verbindungsabbrüche haben. Die Idee war, jede Änderung der IP-Adresse zu speichern. Mein DSL-Problem ist mittlerweile behoben, aber vielleicht kann das Skript ja sonst noch jemand brauchen.

Das ganze besteht aus zwei Teilen: Einmal checkip.sh, das die aktuelle IP ermittelt und ausgibt. Und recordip.sh, das die aktuelle IP mit der letzten IP vergleicht und bei einer Änderung einen Eintrag in eine Protokolldatei macht (Datum, Uhrzeit, IP)  und einen Text ausgibt.

checkip.sh: Zur Ermittlung der externen IP-Adresse kann man wget (oder curl) und den Dienst http://checkip.dyndns.org/ benutzen. Das hat allerdings den Nachteil, dass bei jedem Check eine Abfrage an den DynDNS-Server geschickt wird. Eleganter geht es, wenn man eine Fritz!Box hat, bei der UPNP aktiviert ist. Die Idee dazu hatte ich von http://www.gimme-th.at. Irgendwann hat das aber nicht mehr funktioniert und ich musst mir selbst etwas basteln. War aber nicht besonders schwierig, die Grund-Idee war vorhanden und wie die Abfrage geht stand im Wiki von UbuntuUsers.de. Hier ist das Skript, das seit einigen Jahren bei meiner Firtz-Box 7270 funktioniert (umbenennen in checkip.sh und IP-Adresse der Fritz-Box anpassen):

Skript zum Download: checkip.txt

recordip.sh: Zum Ermitteln der IP wird ./checkip.sh aufgerufen, es sollte deshalb im selben Verzeichnis wie recordip.sh liegen. Die Protokoll-Datei und die Datei zum Zwischenspeichern der aktuellen IP können bei Bedarf am Anfang des Skripts geändert werden.


#!/bin/bash
# file to save the last recorded ip
LASTIPFILE=/tmp/lastip
# file to save an ip-history
LOGFILE=/home/username/ip.log

# if lastipfile does not exist, create it
if [ ! -e $LASTIPFILE ]; then
echo "NoIpSavedYet" > $LASTIPFILE
fi

# get the current ip with a script from www.gimme-th.at
IP=`./checkip.sh`
# Get the last ip
LASTIP=`cat $LASTIPFILE`

if [ $IP != $LASTIP ]; then
# output message
echo "IP geaendert, neue IP ist $IP";
# append ip to logfile
echo `/bin/date +%Y%m%d_%H%M%S` $IP >> $LOGFILE
# remember current ip until next check
echo $IP > $LASTIPFILE
fi

Skript zum Download: recordip.sh

Wenn man automatisch einmal pro Minute prüfen und bei Änderungen benachrichtigt werden will, kann man das sehr schön als Cron-Job einrichten. Ein Text wird nur bei einer Änderung ausgegeben, d.h. Mails bekommt man auch nur, wenn sich die IP tatsächlich geändert hat.

Getestet unter Ubuntu Linux mit einer Fritz!Box 7270. Bei Fragen oder Verbesserungsvorschlägen einfach einen Kommentar schreiben. Danke!

4 Gedanken zu „Eigene externe IP-Adresse speichern (Bash-Skript)“

  1. Dein Blogeintrag ist der erste Treffer für ‚eigene „ip adresse“ loggen linux fritz‘ 🙂
    Während ich selber auf ein ähnliches Skript wie das record-ip Skript gekommen bin, ist der Hinweis auf die UPnP-Funktion der FritzBox für die exteren IP Adresse Gold wert!
    Danke für den Hinweis! Funktioniert übrigens auch bei einer FritzBox 3170 älteren Baujahres (und daher wohl mit allen FritzBoxen mit einigermaßen aktueller Firmware).

  2. Danke für den Hinweis, was du beschreibst könnte ich super verwenden, wenn nicht der Link „http://www.gimme-th.at/blog/?p=165“ tot wäre…. hast Du vielleicht das Script noch irgendwo „rumliegen“?
    Gruß Hille

  3. Servus Hille,

    ja, ein solches Skript hab ich, allerdings nicht das von gimme-th.at. Ich hab mir irgendwann selbst eins gebaut, weil das alte nicht mehr funktioniert hat. Mit meiner Fritz-Box 7270 läuft das so seit ein paar Jahren. Das einzig komplizierte daran ist der Query, den man an die Fritz-Box schicken muss, und der kommt vom Wiki bei ubuntuusers.de. Das komplette Skript verlinke ich oben im Text.

    Viel Erfolg damit!
    Gruß,
    Christian

Schreibe einen Kommentar