IP Logger (Debian / 04.01.2024)

Dieser IP Logger loggt die eigene IP-Adresse in eine CSV-Datei. Dies hat den Grund, dass man Vorwürfe jeder Art durch Vorlage der zu der Zeit genutzten IP-Adresse vorweisen könnte. Nützlich in Verbindung mit einem Cronjob. 

 Das Script holt via "icanhazip.com" die aktuelle IP-Adresse und speichert sie in die CSV-Datei. Wenn via Cronjob das Script ausgeführt wird, empfehle ich den Intervall auf stündlich zu setzen. Eine Zeit von-bis einzubauen halte ich für nicht sinnvoll, da das Internet zu dieser Zeit auch ausfallen könnte. Daher halte ich es für nicht sinnvoll, die IP-Adresse zu speichern und erst bei Änderung erneut zu schreiben. 

 

 🧾 Was macht das Script? 

 📁 Allgemeine Initialisierung: 

 

 

 Bestimme den aktuellen Benutzer ( whoami ) 

 

 

 Setze $data auf: /home/<user>/script-data/<scriptname> (z. B. /home/pi/script-data/iplogger.sh ) 

 

 

 Setze $ippage auf icanhazip.com 

 

 Hole aktuelle öffentliche IP via curl 

 

 📬 Benötigte Tools: 

 

 

 curl 

 

 

 nc (netcat) 

 

 

 sed , awk , grep , uniq 

 

 

 Bash >= 4 

 

 

   

 Script: 

 #!/bin/bash

user=$(whoami)

data="/home/$user/script-data/$(basename "$0")"

ippage="icanhazip.com"

ipneu=$(curl -s "$ippage")

if [ ! -d "$data" ]; then

	mkdir -p "$data"

fi

if [ -n "$1" ] && [ "$1" = "suche" ]; then

	cat "$data/ipdb.csv" | sed 's/;/ /g' | sed 's/\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\)/\3.\2.\1/' | grep "$2" | awk '{print $1, "", "", $3}' | uniq

	exit

else

	if nc -z -w 1 "$ippage" 443 2>/dev/null; then

		echo "$(date +"%Y-%m-%d;%H:%M");$ipneu" >> "$data/ipdb.csv"

		echo "OK: $ipneu"

	else

		if nc -z -w 1 "google.de" 443 2>/dev/null; then

			echo "Fehler, $ippage nicht erreichbar."

			echo "$(date +"%Y-%m-%d;%H:%M");$ippage nicht erreichbar" >> "$data/ipdb.csv"

		else

			echo "Kein Internet."

			echo "$(date +"%Y-%m-%d;%H:%M");offline" >> "$data/ipdb.csv"

		fi

	fi

fi