# 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 &gt;= 4

Script:

```bash
#!/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
```